我需要使用ssrs创建一个报告,但我在参数方面遇到了一些困难。 我有3个参数,开始日期,结束日期和SalesID。
这是我需要做的事情清单;
1-Dates可以为null,如果保留为null,则所有日期都应该在报告上(我想这里需要一个case语句)
2- SalesID是手动输入的,可以是多个值或null。如果它为null,则所有salesid都应该报告。
到目前为止,我尝试了类似SalesId和日期的内容,下面是一条查询;
AND ST.CREATEDDATE BETWEEN (@Baslangic) and (@Bitis)
AND CASE CPDR.SALESID WHEN @SalesID THEN @SalesID
WHEN NULL THEN 'Hepsi' END
(Hepsi用我的母语表示“全部”,因此在参数选择中有点欺骗SSRS,不确定它是否会起作用。其他参数只是“开始”和“结束”。)
我得到“在预期条件的上下文中指定的非布尔类型的表达式”,在case语句中出错,不知道该怎么做。
我做错了什么?
答案 0 :(得分:0)
我认为这样的事情
AND XXXX = CASE CPDR.SALESID WHEN @SalesID THEN @SalesID
WHEN NULL THEN 'Hepsi' END
什么是等于@SalesID或'Hepsi'? 你似乎错过了要与之比较的case语句前面的东西(因此布尔表达式错误)。我在我的例子中添加了XXXX。
编辑 - 除非您在示例后有更多WHEN案例,否则请使用ELSE而不是最后一个WHEN:
ELSE 'Hepsi' END
答案 1 :(得分:0)
尝试这样的smt:
AND (@Baslangic is null OR ST.CREATEDDATE BETWEEN (IsNull(@Baslangic,GETDATE())) and (isNull(@Bitis,GETDATE())))
AND (@SalesID is null OR CPDR.SALESID IN (@SalesID))