我在下面有一张表
Sub1 Sub2 Total
1 2 300
1 3 200
2 1 600
我需要一个sql查询结果
1 0 500
1 2 300
1 3 200
2 0 600
2 1 600
有任何帮助吗?如果可能的话,我需要一个没有联合的查询吗?
答案 0 :(得分:2)
使用ROLLUP
:
SELECT *
FROM(
SELECT
Sub1,
Sub2 = ISNULL(Sub2, 0),
Total = SUM(Total)
FROM tbl
GROUP BY ROLLUP(Sub1, Sub2)
)t
WHERE Sub1 IS NOT NULL
ORDER BY Sub1, Sub2
使用SUM
和UNION ALL
:
SELECT * FROM tbl
UNION ALL
SELECT Sub1, 0, SUM(Total)
FROM tbl
GROUP BY Sub1
ORDER BY Sub1, Sub2