Tsql 透视语句错误
我无法在以下数据集上运行Tsql 透视语句错误,tsql,pivot,Tsql,Pivot,我无法在以下数据集上运行PIVOT Machine AtTime ValueString ------------------------------------------------- 3 2017-06-01 11:42:33.000 Start 3 2017-06-01 11:43:46.000 Stop 5 2017-06-01 12:42:33.000 Start
PIVOT
Machine AtTime ValueString
-------------------------------------------------
3 2017-06-01 11:42:33.000 Start
3 2017-06-01 11:43:46.000 Stop
5 2017-06-01 12:42:33.000 Start
5 2017-06-01 12:43:46.000 Stop
SQL
SELECT Machine, TimeStart, TimeEnd
FROM
(
SELECT Machine, [AtTime], [ValueString]
FROM [dbo].[DATA_ACTION]
)
) d
PIVOT
(
MAX(AtTime)
FOR [AtTime] in (TimeStart, TimeEnd)
) piv;
错误
将数据类型nvarchar转换为datetime时出错
目标
把桌子弄成这样
Machine TimeStart TimeEnd
------------------------------------------------------------
3 2017-06-01 11:42:33.000 2017-06-01 11:43:46.000
5 2017-06-01 12:42:33.000 2017-06-01 12:43:46.000
您应该使用Valuestring:
create table data_action(Machine nvarchar(50), AtTime datetime,ValueString nvarchar(50))
insert into data_action values (3,'2017-06-01 11:42:33.000','Start')
insert into data_action values (3,'2017-06-01 11:43:46.000','Stop')
insert into data_action values (5,'2017-06-01 12:42:33.000','Start')
insert into data_action values (5,'2017-06-01 12:43:46.000','Stop')
SELECT machine,start as [TimeStart],stop as [TimeEnd]
FROM
(
SELECT Machine, [AtTime], [ValueString]
FROM [dbo].[DATA_ACTION]
) d
PIVOT
(
MAX(AtTime)
FOR [ValueString] in ([Start] , [Stop])
) piv;
结果是:
*---------*-------------------------*------------------------*
|machine |TimeStart |TimeEnd |
*---------*-------------------------*------------------------*
|3 |2017-06-01 11:42:33.000 |2017-06-01 11:43:46.000 |
*---------*-------------------------*------------------------*
|5 |2017-06-01 12:42:33.000 |2017-06-01 12:43:46.000 |
*---------*-------------------------*------------------------*
我不确定。我在我的sql server中做了。它工作正常。