小猪支持我昨天的另一个问题。
我想知道如何计算具有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
答案 0 :(得分:10)
您可以在COUNT(DISTINCT )
表达式的输出上使用CASE
。例如,要计算聚合结果中某处有AcctNo_Pkey
行的不同[amount] < 1500
的数量,您可以使用:
COUNT(DISTINCT CASE WHEN [amount] < 1500 THEN AcctNo_PKey END)
您可以在行动中看到in this minimal sqlfiddle example