我只有一个包含4列的表:A,B,C和D
我有一张所有A-B组合的SUM
C表。
SELECT
A,
B,
SUM(C),
FROM Table
GROUP BY A, B
当C = 1时,我有一张D的AVG
表用于所有A-B组合。
SELECT
A,
B,
AVG(D),
FROM Table
WHERE C = 1
GROUP BY A, B
在保留SELECT
的单个查询中重新组合这些GROUP BY A, B
语句的最佳方法是什么?
我尝试RIGHT JOIN ... ON A.Table = A.Table AND B.Table = B.Table
,但这并没有完全奏效。
答案 0 :(得分:1)
您可以使用条件聚合来完成:
SELECT A, B, SUM(C),
avg(case when C = 1 then D end)
FROM Table
GROUP BY A, B
答案 1 :(得分:0)
试
SELECT A, B,
Sum(C) SumC,
Sum(case C when 1 Then D else 0 end) /
Sum(case C When 1 then 1 else 0 end) AVGOfDForC1Rows,
FROM Table
GROUP BY A, B