我檢查了您的科技發佈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,這是慢,有它的危險。但是,如果您正在運行代碼,那麼也可以運行。
你可能想要更詳細地說明你想完成什麼...... – 2009-12-11 21:42:43