首页 > 解决方案 > 将 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 中使用它?谢谢。

标签: reporting-servicescrystal-reports

解决方案


如果我没记错的话,这是 Crystal 报表将SLHD.Status < 2在 SubStatus 参数是什么时候过滤数据的地方,O但如果 SubStatus 参数是,C那么 SL​​HD.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

推荐阅读