SQL Server:将pivot生成的字符串列转换为日期时间列

时间:2018-02-12 21:40:16

标签: sql-server string datetime pivot

我从一个看起来像这样的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

问题是我的dtindtout是字符串列,我需要它们是datetime列。

我不能在我的SQL代码中使用临时表。因此,有没有办法扩充/添加我原来的SQL代码,以便透视表生成列dtindtout作为datetime列?

0 个答案:

没有答案