Oracle SQL汇总查询:确定组的开始

时间:2014-03-11 12:23:18

标签: sql oracle rollup

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

例如:

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

1 个答案:

答案 0 :(得分: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

的代码