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

don*_*iti 6 sql t-sql sql-server sql-server-2008

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

我想知道如何计算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
Run Code Online (Sandbox Code Playgroud)

这是我当前生成所需结果的代码.一世

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)
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*Dan 11

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

COUNT(DISTINCT CASE WHEN [amount] < 1500 THEN AcctNo_PKey END)
Run Code Online (Sandbox Code Playgroud)

您可以在这个最小的sqlfiddle示例中看到