案例当不同的值然后加上另一个值?

时间:2014-09-05 13:44:13

标签: sql sql-server sql-server-2008 tsql

小猪支持我昨天的另一个问题。

我想知道如何计算具有amt>的不同记录数量。 1500.我的数据连接的方式,我可以有相同的PKey AcctNo反映不止一次因为我的全外部加入另一个具有多个事务记录的表。

(Case When AcctNo_PKey = distinct then sum(case when amount > 1500 then 1 else 0 end)
 else 0) end as GT1500

这是我当前生成所需结果的代码。我

SELECT sum(case when amount > 1500 then 1 else 0 end) as GT1500
     , sum(case when amount < 1500 then 1 else 0 end) as LT1500
    , DATEPART(Year, amount.Date) Deposit_Year
    , DATEPART(QUARTER, amount.Date) Deposit_Qtr 
From account 
full outer JOIN amount ON account.AcctNo = amount.AcctNo
group by DATEPART(Year, amount.Date)
    , DATEPART(QUARTER, amount.Date)

或许我的整个方法都错了...... idk

1 个答案:

答案 0 :(得分:10)

您可以在COUNT(DISTINCT )表达式的输出上使用CASE。例如,要计算聚合结果中某处有AcctNo_Pkey行的不同[amount] < 1500的数量,您可以使用:

COUNT(DISTINCT CASE WHEN [amount] < 1500 THEN AcctNo_PKey END)

您可以在行动中看到in this minimal sqlfiddle example