2014-09-05 47 views
3

小猪对我昨天的另一个问题做了支持。案例当不同的值然后总结另一个值?

我想知道如何计算具有> 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的

+2

顺便说一句看,我失踪一个'E1500'列;) – 2014-09-05 13:46:52

+0

列数量来自哪个表?您应该使用别名来帮助识别列的位置。在编码时,您有一个表格和一列都是名为金额。我不认为这个查询会像发布一样工作。 – 2014-09-05 13:52:32

+0

@TimSchmelter不知道我关注 – donviti 2014-09-05 13:52:35

回答

7

您可以在CASE表达的输出使用COUNT(DISTINCT)。例如,计算不同AcctNo_Pkey S作的汇总结果的[amount] < 1500行某处的数量,你可以这样做:

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

,你可以在行动in this minimal sqlfiddle example

+0

上发布了我的查询中的代码,然后你就去了,这就是我需要做的。感谢ton @dan和其他人 – donviti 2014-09-05 14:07:01

相关问题