where子句包含case语句和变量

时间:2014-08-19 16:57:10

标签: sql sql-server reporting-services

使用参数创建SSRS报告,用户可以在该参数中选择余额大于或等于零的帐户。在我的Select语句中我有

, payment1 + payment 2 + payment3 + invoice AS CurrentBalance

在我所拥有的地方

and (case when @Balance = 1 then (payment1 + payment2 + payment3 + invoice) end > 0
   or
     case when @Balance = 0 then (payment1 + payment2 + payment3 + invoice) end = 0)

这会影响我的表现。什么是另一种方法呢?

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

AND (
  (@Balance=1 AND payment1 + payment2 + payment3 + invoice > 0)
OR
  (@Balance=0 AND payment1 + payment2 + payment3 + invoice = 0)
)

答案 1 :(得分:0)

这会影响我的表现。什么是另一种方法呢? 也许...

having (@Balance = 1 and currentBalance > 0) OR (@Balance = 0 and currentbalance = 0) 

我不确定是否必须每次在where子句中重复两次数学运算,这可能会阻止..

另一种方法是将一个计算列添加到表中,以便payment1,2,3 +发票数学已经完成。