在单个SQL查询中查找所有Multipler结果

时间:2015-10-25 23:35:30

标签: sql sql-server hierarchical-data

我在下面有一张表

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

有任何帮助吗?如果可能的话,我需要一个没有联合的查询吗?

1 个答案:

答案 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

使用SUMUNION ALL

SELECT * FROM tbl
UNION ALL
SELECT Sub1, 0, SUM(Total)
FROM tbl
GROUP BY Sub1
ORDER BY Sub1, Sub2