我有下表,但不确定是否可以透视表中的某些列:
CREATE TABLE #test ( id int, Area varchar(10), [grouping] varchar(15), task_1 int, task_2 int) INSERT INTO #test Values (10,'A','HighNeeds',1, 10) INSERT INTO #test Values (10,'B','HighNeeds',1, 12) INSERT INTO #test Values (12,'C','Non HighNeeds',2, 14) select * from #test ------------------------------------------------- id Area grouping task_1 task_2 10 A HighNeeds 1 10 10 B HighNeeds 1 12 12 C Non HighNeeds 2 14 What I'm trying to get is: ------------------------------------------------- id Area Tasks HighNeeds Non HighNeeds 10 A task_1 1 NULL 10 A task_2 10 NULL 10 B task_1 1 NULL 10 B task_2 12 NULL 12 C task_1 NULL 2 12 C takk_2 NULL 14
基本上,我试图保留ID和Area列,但将数据和任务列分组。
ID
Area
这是相当棘手-你需要支点Grouping为列,逆透视task_1和task_2为行值:
Grouping
task_1
task_2
SELECT * FROM ( SELECT id, Area, grouping, tskCount, Task FROM test UNPIVOT ( tskCount for Task in (task_1, task_2) ) unpvt ) X PIVOT ( SUM(tskCount) for grouping in (HighNeeds, [Non HighNeeds]) )pvt;
sqlfiddle