【发布时间】:2016-10-30 03:58:16
【问题描述】:
我正在使用 SQL Server 2012 并尝试根据下表从 TSQL 构建一个数据透视表,该表是通过连接多个表生成的。
INCIDENT ID | Department | Priority | Impact
--------------------------------------------
1 | IT | Urgent | High
2 | IT | Retrospective | Medium
3 | Marketing | Normal | Low
4 | Marketing | Normal | High
5 | Marketing | Normal | Med
6 | Finance | Normal | Med
从此表格中,希望它以下列格式显示:
Priority | Normal | Urgent | Retrospective |
| Department | Low | Medium | High | Low | Medium | High | Low | Medium | High |
--------------------------------------------------------------------------------
| IT | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
| Finance | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
| Marketing | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
我有以下代码成功地在“优先级”级别上进行透视。
SELECT *
FROM (
SELECT
COUNT(incident.incident_id) OVER(PARTITION BY serv_dept.serv_dept_n) Total,
serv_dept.serv_dept_n Department,
ImpactName.item_n Impact,
PriorityName.item_n Priority
FROM -- ommitted for brevity
WHERE -- ommitted for brevity
) AS T
PIVOT (
COUNT(Priority)
FOR Priority IN ("Normal", "Urgent", "Retrospective")
) PIV
ORDER BY Department ASC
我怎样才能让这个查询像我粘贴的第二个表一样在两个级别上进行旋转? 任何帮助将不胜感激。
【问题讨论】:
-
您的样本数据没有“财务”部门。这些信息从何而来?
-
这只是我出于解释目的而输入的随机数据。
标签: sql-server database tsql pivot relational-database