【发布时间】:2020-06-02 17:59:29
【问题描述】:
我正在使用以下 SQL 来尝试适应输入参数的多个场景。
AND ec.eventId in (CASE WHEN @event = 'test_reeq' THEN 223
WHEN @event = 'test_NT' THEN 224
WHEN @event = 'Both' then '223,224'
WHEN @event = 'All' THEN ec.EventId
end
)
我的问题似乎在于我尝试使用“两者”输入。 SQL不喜欢逗号,我试过用括号代替单引号,也没有引号,但还是没有运气。有没有可能做我想做的事?
更多信息:EventId 本身是数据库中的整数数据类型。为了方便用户(这最终将是一份 SSRS 报告),我希望可以选择使用关键字“Both”将这两个 ID (223,224) 分组。我知道在 SSRS 中,我可以只进行多选,甚至可以默认选择这两个,但我更愿意将它们组合在一起作为一个选项。
【问题讨论】:
-
'Both'是否意味着eventId必须同时 223 和224?我不认为这是可能的。也许选项名称应该是'Either'?也许您可以显示一些示例数据,并确定选择Both或All Others时将返回哪些行。 -
它只是不能那样工作。在互联网上搜索“case in where”,你会发现很多例子和讨论。请注意,“所有其他人”实际上意味着(正如您编写的那样)一切 - 该逻辑中没有暗示“其他人”。如果这是你想要的,那么你的逻辑需要改变。
-
'Both' 应该是 223 AND 224,而 'All Others' 的命名不合适,应该只是 'All',我理解是包括 223 和 224 在内的所有内容。
-
您能否在表格中显示
eventId同时为223 和 224 的一行?或者,它真的意味着 either 223 or 224? -
对不起:你让我明白了,我也是这个意思。我没有考虑 SQL 语法。
标签: sql-server reporting-services