0

我正在使用 SQL Server 2008

我有一个MainTable有 3 列Date的表Parameter,,,Value

样本数据:

Date           Parameter      Value
-------------+--------------+-------
01-Jan-2010  | Temperature  | 30
01-Jan-2010  | SnowLevel    |  2
01-Jan-2010  | Humidity     | 60
02-Jan-2010  | Temperature  | 32
02-Jan-2010  | SnowLevel    |  5

现在我想编写一个查询来将这个时间序列数据转换为下表,每个参数都有一个单独的列:

Date, Temperature, SnowLevel, Humidity 

使用以下数据:

Date          Temperature      SnowLevel     Humidity 
------------+----------------+-------------+----------
01-Jan-2010 |     30         |      2      |    60
02-Jan-2010 |     32         |      5      |    NULL

我知道 SQL Server 有很多处理时间序列的功能,但我找不到任何可以进行这种转换的基本功能。我找到了数十篇关于使用 DMX 进行数据预测的文章,但没有一篇关于这些基本内容的文章。

一种直接的方法是将这个表与每个参数(/列)本身连接起来,但我有数百个不同的参数,而且这种方法在我的情况下肯定行不通。

很感谢任何形式的帮助!

4

1 回答 1

1

您想要的通常使用以下方式实现PIVOT

SELECT [Date], [Temperature], [SnowLevel], [Humidity]
FROM (
   SELECT [Date], Parameter, Value
   FROM #MainTable )src
PIVOT (
   MAX(Value)
   FOR Parameter IN ([Temperature], [SnowLevel], [Humidity])
) pvt

上述查询根据 OP 的样本数据生成以下输出:

Date      Temperature   SnowLevel   Humidity
---------------------------------------------
2010-01-01  30             2            60
2010-01-02  32             5            NULL
于 2015-01-30T17:11:33.570 回答