2013-05-09 89 views
0

我想用SQL Server 2008 R2查詢UNPIVOT Cnvert Column to Rows。如何使用UNPIVOT將列轉換爲行SQL Server?

但它是錯誤

**Msg 170, Level 15, State 1, Line 16 
Line 16: Incorrect syntax near 'unpivot'.** 

代碼:

SELECT EmpNo, CDate, CTime 
FROM 
(SELECT EmpNo,ChkDate,ChkIn,ChkOut 
    FROM TA_FillTime) ta1 
UNPIVOT 
(CTime FOR CDate IN (ChkIn, ChkOut) 
) AS ta2 

表TA_FillTime:

EmpNo | ChkDate  | ChkIn     | ChkOut 
1290005 | 2013-05-09 | 2013-05-09 07:04:26.000 | 2013-05-09 17:57:36.000 
1320005 | 2013-05-09 | 2013-05-09 07:56:17.000 | 2013-05-09 18:24:35.000 
1320007 | 2013-05-09 | 2013-05-09 07:45:50.000 | 2013-05-09 17:24:55.000 

我需要輸出:

EmpNo | CDate  | CTime  
1290005 | 2013-05-09 | 2013-05-09 07:04:26.000 
1290005 | 2013-05-09 | 2013-05-09 17:57:36.000 
1320005 | 2013-05-09 | 2013-05-09 07:56:17.000 
1320005 | 2013-05-09 | 2013-05-09 18:24:35.000 
1320007 | 2013-05-09 | 2013-05-09 07:45:50.000 
1320007 | 2013-05-09 | 2013-05-09 17:24:55.000 

感謝您的時間,:)

+0

你已經寫了實際上將轉化'ChkIn'和'Chkout'列行值。檢查[SQL小提琴演示](HTTP查詢: //sqlfiddle.com/#!3/a6a40/2) – praveen 2013-05-09 10:07:13

+0

我希望這有助於http://blog.sqlauthority.com/2008/05/29/sql-server-unpivot-table-example/ – Narendra 2013-05-09 10:10:39

回答

0
select 
EmpNo, ChkDate, CDate = ChkIn 
from TA_FillTime 
union all 
select 
EmpNo, ChkDate, CDate = ChkOut 
from TA_FillTime 
order by 
EmpNo, ChkDate 
+0

感謝advance! :d – nettoon493 2013-05-10 01:58:06