2009-12-11 73 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