我从一个看起来像这样的SQL Server表开始:
Id cDate parameter oldValue newValue
-----------------------------------------------------------------
96A11 10/17/2017 spanactual 10 9
96B15 10/17/2017 dtin 10/14/2017 0:00 10/15/2017 0:00
96B15 10/17/2017 dtout 11/20/2017 0:00 11/21/2017 0:00
0006F9A 10/19/2017 dtin 11/30/2017 0:00 12/1/2017 0:00
0006F9A 10/19/2017 dtout 12/1/2017 0:00 12/2/2017 0:00
使用下面的SQL代码,我能够转动表格,使'dtin'和'dtout'参数成为列。 (dtin和dtout日期来自newValue列)。
Select
Id, cDate,
Min(Case parameter When 'dtin' Then newValue End) dtin,
Min(Case parameter When 'dtout' Then newValue End) dtout
From
[scheduleChangeHistory]
Group By
Id, cDate
运行上面的代码后,我的表现在看起来像这样:
Id cDate dtin dtout
-------------------------------------------------------
96A11 10/17/2017
96B15 10/17/2017 10/15/2017 0:00 11/21/2017 0:00
0006F9A 10/19/2017 12/1/2017 0:00 12/2/2017 0:00
问题是我的dtin
和dtout
是字符串列,我需要它们是datetime
列。
我不能在我的SQL代码中使用临时表。因此,有没有办法扩充/添加我原来的SQL代码,以便透视表生成列dtin
和dtout
作为datetime
列?