2013-05-09 42 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