SQL查询优化:@ReportType非Slack时排除Slack test结果
修改T-SQL查询以实现指定筛选逻辑
你可以直接拆分WHERE条件,替代原有的CASE表达式,让逻辑更清晰且满足需求:
DECLARE @ReportType AS VARCHAR(255) = 'Machine' SELECT [WOCust3] AS [Machine] FROM MyTable WHERE (@ReportType IS NULL) OR (@ReportType = 'Slack' AND [WOCust3] LIKE '%Slack test%') OR (@ReportType <> 'Slack' AND [WOCust3] NOT LIKE '%Slack test%')
逻辑说明
- 当
@ReportType为NULL时,返回所有记录(保留原查询的逻辑) - 当
@ReportType等于'Slack'时,仅返回WOCust3包含'Slack test'的记录(保留原逻辑) - 当
@ReportType为其他任意非NULL值时,返回WOCust3不包含'Slack test'的所有记录(实现你的需求)
如果不需要@ReportType为NULL时返回所有记录,可以直接移除第一个条件(@ReportType IS NULL)。
内容的提问来源于stack exchange,提问作者Jesus
相关产品推荐
相关产品推荐

