分类一:
GROUP BY (PRODUCT,FLOOR);
COL1 | COL2 | count | sum |
A | A1 | 1 | 5 |
A | A2 | 1 | 4 |
B | B1 | 1 | 3 |
分类二:
GROUP BY ROLLUP (Col1,Col2);
COL1 | COL2 | count | sum | 备注 |
A | A1 | 1 | 5 | |
A | A2 | 1 | 4 | |
A | (null) | 2 | 9 | (每一组COL2的综合) |
B | B1 | 1 | 3 | |
B | (null) | 1 | 3 | (每一组COL2的综合) |
(null) | (null) | 3 | 12 | (每COL1的综合) |
ROLLUP(A, B, C)
首先会对(A、B、C)进行 GROUP BY,然后对(A、B)进行 GROUP BY,然后是(A)进行 GROUP BY,最后对全表进行 GROUP BY
优点:在vs合並單元格方便
分类三:GROUPING( Col1 )=1
其实就是Col1中初始为null的一行,为GROUPING( Col1 )=1(见上表)
COL1 | COL2 | count | sum | 备注 |
A | A1 | 1 | 5 | |
A | A2 | 1 | 4 | |
A | 小计 | 2 | 9 | 该行中,GROUPING( Col2 )=1 |
B | B1 | 1 | 3 | |
B | 小计 | 1 | 3 | 该行中,GROUPING( Col2 )=1 |
合计 | 合计 | 3 | 12 | 该行中,GROUPING( Col1 )=1 GROUPING( Col2 )=1 |
SELECT
CASE WHEN GROUPING(Col1) = 1 THEN '合计'
ELSE Col1 END AS COL1
, CASE WHEN GROUPING(Col2) = 1 AND GROUPING(Col1) = 1 THEN '合计'
WHEN GROUPING(Col2) = 1 THEN '小计'
ELSE Col2 END AS COL2
, COUNT(Col2) AS COUNT
,SUM(Col3) AS SUM
FROM IPQC_FAI_DAILY_WO_T
GROUP BY ROLLUP(PRODUCT, FLOOR)
拓展:GROUP BY Col1,Col2 ,ROLLUP (Col3,Col4)
COL1 | COL2 | COL3 | COL4 | count | sum |
甲 | 甲 | A | A1 | 1 | 5 |
甲 | 甲 | A | A2 | 1 | 4 |
甲 | 甲 | A | 小计 | 2 | 9 |
甲 | 甲 | B | B1 | 1 | 3 |
甲 | 甲 | B | 小计 | 1 | 3 |
甲 | 甲 | 合计 | 合计 | 3 | 12 |
甲 | 乙 | A | A1 | 1 | 5 |
甲 | 乙 | A | A2 | 1 | 4 |
甲 | 乙 | A | 小计 | 2 | 9 |
甲 | 乙 | B | B1 | 1 | 3 |
甲 | 乙 | B | 小计 | 1 | 3 |
甲 | 乙 | 合计 | 合计 | 3 | 12 |