SQL Server使用CTE查询分层结果

时间:2016-06-10 06:28:53

标签: sql sql-server sql-server-2008

我有一个emp表,如下所示:

enter image description here

我需要按DeptNoJOB进行分组。

我使用以下代码按

生成分组
;With Cte as
(
    select 
        DeptNo, Count(EMPNO) Total 
    from 
        Emp 
    group by 
        DeptNo

    union all 

    select  
        DeptNo, Count(EMPNO) Total 
    from 
        Emp 
    group by 
        DeptNo, Job 
) 
select * 
from Cte 
order by DeptNo, Total desc

但我需要输出如下

enter image description here

有没有选项可以在动态CTE的SQL中生成类似的结果?

由于

1 个答案:

答案 0 :(得分:0)

SELECT x.DeptNo AS [Dept/Job], COUNT(*) AS Cnt, x.DeptNo, 1 AS RowType
FROM dbo.emp x
GROUP BY x.DepNo

UNION ALL 

SELECT y.Job, COUNT(*), y.DepNo, 2 AS RowType
FROM dbo.emp y
GROUP BY y.Job, y.DepNo

ORDER BY DepNo, RowType