小 pig 回避了我昨天遇到的另一个问题。
我想知道如何计算amt> 1500的记录的不同数量。以我的数据联接的方式,我可以多次反射(reflect)相同的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
最佳答案
您可以在COUNT(DISTINCT )
表达式的输出上使用CASE
。例如,要计算聚合结果中某处具有AcctNo_Pkey
行的不同[amount] < 1500
的数量,可以使用以下方法:
COUNT(DISTINCT CASE WHEN [amount] < 1500 THEN AcctNo_PKey END)
您可以在行动中看到in this minimal sqlfiddle example
关于sql - 情况当不同的值然后求和另一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25687345/