34,587
社区成员
发帖
与我相关
我的任务
分享
--看这两段:
2、GROUPING
select item,color,Sum(qty) qtysum,grouping(item) grouping_item,grouping(color) grouping_color
from tb group by item,color with rollup
/*
item color qtysum grouping_item grouping_color
---------- ---------- ----------- ------------- --------------
Chair Blue 100 0 0
Chair Red 400 0 0
Chair NULL 500 0 1
Table Blue 300 0 0
Table Red 100 0 0
Table NULL 400 0 1
NULL NULL 900 1 1
*/
3、利用grouping将上面的空(null)转换为合计,小计
SELECT CASE WHEN (GROUPING(Item) = 1) THEN '合计' else item END AS Item,
CASE WHEN (GROUPING(Item) = 1) and (GROUPING(Color) = 1) THEN '合计'
WHEN (GROUPING(Item) = 0) and (GROUPING(Color) = 1) THEN '小计'
ELSE color END AS Color,
SUM(Qty) AS QtySum
FROM tb
GROUP BY Item, Color
WITH ROLLUP
/*
Item Color QtySum
---------- ---------- -----------
Chair Blue 100
Chair Red 400
Chair 小计 500
Table Blue 300
Table Red 100
Table 小计 400
合计 合计 900
*/