0

我只有一个有 4 列的表:A、B、C 和 D

我有一张SUM所有 AB 组合的 C 表。

SELECT 
A,
B,
SUM(C),
FROM Table
GROUP BY A, B

当 C = 1 时,我有一个AVG所有 AB 组合的 D 表。

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,但这并不完全奏效。

4

2 回答 2

1

您可以使用条件聚合来做到这一点:

SELECT A, B, SUM(C),
       avg(case when C = 1 then D end)
FROM Table
GROUP BY A, B
于 2013-11-06T02:41:32.953 回答
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
于 2013-11-06T02:44:07.197 回答