1

我们如何确定 Rollup 中 Group 的开始?并通过将其与一些有用的文本连接来包含组值并将其显示为组的第一行?

例如:

dept   emp_name sal
----   -------- ---
10     sac      999
10     abc      888
20     pqr      777
20     lmn      123
30     stv      444
30     com      555

o/p after rollup should be

dept             emp_name sal
----             -------- ---
Department 10    NULL     NULL
10               sac      999
10               abc      888
20                        1887   
Department 20    NULL     NULL
20               pqr      777
20               lmn      123
20                        900 
Department 30    NULL     NULL
30               stv      444
30               com      555
30                        999
                          3786
4

1 回答 1

0

这是您可以达到要求的查询。它用GROUP BY ROLLUP

SELECT DISTINCT 1 AS rn,dept, CONCAT('Department ',  dept) AS DeptDesc, NULL AS Sum
  FROM your_table 
UNION ALL
SELECT 2, dept, CAST(dept AS VARCHAR(10)), SUM(SAL)
  FROM your_table
GROUP BY ROLLUP(dept, emp_name)
ORDER BY dept, rn, sum  

这是SQL Fiddle的代码

于 2014-03-11T12:49:24.337 回答