2009-12-11 75 views
1

我想在桌子上使用樞軸旋轉(移調)表,但我沒有得到如何做到這一點。我如何使用數據透視表?

我想知道它是如何工作的。 我發現了很多egs,但我無法理解這些如何工作。

Check this, e.g.

如何那朵工作,我只是想我行轉成的cols和cols到 說我對第1天第2天31周的cols等多達31天,外鍵現在EMPID 行我想旋轉DAY1 DAY2

EmpId Day1 Day2 Day3 
---------- 
1  A P  P 
2  P P  p 

在這裏,我想這樣的

Exp 1 2 3 as EmpId 
---------- 
Day1 A P .... 
Day2 P P ... 
Day3 P P ... 

的旋轉表d等等

+2

你可能想要更詳細地說明你想完成什麼...... – 2009-12-11 21:42:43

回答

2

我檢查了您的科技發佈here,我發現您不想使用PIVOT,因爲它只返回彙總結果。 UNPIVOT會讓你非常接近你正在尋找的東西,然後在每一列的表格上做一個加入。我做了這些數據,您下面舉了一個例子:

----Create the table and insert values as portrayed in the previous example. 
CREATE TABLE pvt (EmpId int, Day1 char(1), Day2 char(1), Day3 char(1)); 
CREATE TABLE pvt2 (EmpId int, DayNum CHAR(4), DayNums CHAR(4)); 
GO 
INSERT INTO pvt VALUES (1,'A','P','P'); 
INSERT INTO pvt VALUES (2,'P','P','P'); 
GO 
--Unpivot the table. 
INSERT INTO pvt2 
SELECT EmpId,DayNum, DayNums 
FROM 
    (SELECT EmpId, Day1, Day2, Day3 
    FROM pvt) p 
UNPIVOT 
    (DayNums FOR DayNum IN 
     (Day1,Day2,Day3) 
)AS unpvt; 
GO 
SELECT 
a.DayNum, 
a.DayNums, 
    b.DayNums 
FROM pvt2 a 
JOIN pvt2 b ON a.DayNum = b.DayNum 
    AND a.EmpId=1 
    AND b.EmpId = 2 

運行上面的代碼將返回:

Exp 1 2 3 as EmpId 
---------- 
Day1 A P .... 
Day2 P P ... 
Day3 P P ... 

唯一的其他解決方案,我知道的是動態SQL,這是慢,有它的危險。但是,如果您正在運行代碼,那麼也可以運行。

+0

thx ben回答這個問題仍然對我開放。我沒有得到任何解決方案。稍後會看到你的答案 – 2010-01-13 19:46:57