reporting-services - 将 Crystal 转换为 SSRS:如何在 where 子句中使用“if”?
问题描述
我正在手动将现有的 Crystal Report 转换为 SSRS。在CR选择公式中,部分公式包括以下内容:
(if {?SubStatus}="O" then {SLHD.Status}<2 else
if {?SubStatus}="C" then {SLHD.Status}=2 else 1=1)
注意: ?SubStatus 是一个参数。
如何在 SQL WHERE 子句中对此进行编码,以便可以在 SSRS 中使用它?谢谢。
解决方案
如果我没记错的话,这是 Crystal 报表将SLHD.Status < 2
在 SubStatus 参数是什么时候过滤数据的地方,O
但如果 SubStatus 参数是,C
那么 SLHD.Status 必须是 2。
我认为在这种情况下使用 CASE 语句实际上会更容易。CASE 类似于 IF,但没有嵌套 IF 有多种可能性。
WHERE CASE WHEN @SubStatus NOT IN ('O', 'C') THEN 1
WHEN @SubStatus = 'O' AND SLHD.Status < 2 THEN 1
WHEN @SubStatus = 'C' AND SLHD.Status = 2 THEN 1
ELSE 0 END = 1