SQL Server将列分隔为一些列

时间:2016-10-31 15:36:26

标签: sql sql-server

数据如下:

Measure   Value    Date  
--------------------------------
1         2.3      2016-01-01
1         2.5      2016-01-02
1         2.6      2016-01-03
2         1.2      2016-01-01
2         1.3      2016-01-02
2         1.4      2016-01-03

我想根据Measures

将Value列分成2列

最终输出应该看起来像

Date          Value_Measure_1     Value_Measure_2
---------------------------------------------------------------------
2016-01-01    2.3                 1.2
2016-01-02    2.5                 1.3
2016-01-03    2.6                 1.4

我能找到的唯一方法就是自我加入。

还有其他方法可以做得更好吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

如果每个度量每个日期只有1行,则可以这样做:

select
  Date,
  max(case when Measure = 1 then value end) as Value_Measure_1
  max(case when Measure = 2 then value end) as Value_Measure_2
from
  yourtable
group by
  Date

答案 1 :(得分:1)

使用条件聚合:

SELECT t.date,
       MAX(CASE WHEN t.Measure = 1 THEN t.Value END) as val_meas_1,
       MAX(CASE WHEN t.Measure = 2 THEN t.Value END) as val_meas_2
FROM YourTable t
GROUP BY t.date

答案 2 :(得分:0)

我建议您将枢轴功能与某些T-SQL一起使用。