是否可以编写一个查询,将表中的2列分组,以获得成员总数,再加上该表中一列的总和,但按一列分组?
例如,数据如下所示
我想得到“ohid”和“memid”列的不同组合的计数,并得到按ohid分组的“amount”列的总和。结果应该是这样的
我能够得到正确的计数使用下面的查询
SELECT count(*) as TotCount
from (Select DISTINCT OHID, MemID
from #temp) AS TotMembers
但是,当我尝试使用下面的查询来获得所有结果时,我得到的结果是15个和一个完全不同的总和。
SELECT t.OHID,
count(TotMembers.MemID) as TotCount,
sum(t.Amount) as TotalAmount
from (Select DISTINCT OHID, MemID
from #temp) AS TotMembers
join #temp t on t.OHID = TotMembers .OHID
GROUP by t.OHID
1条答案
按热度按时间pkbketx91#
如果我理解正确,你要考虑
NULL
作为有效值。剩下的只是聚合:这个
case
逻辑可能有点令人讨厌。只是在增加1
如果有任何值NULL
.通过两个级别的聚合,您可能会发现这一点更容易实现: