首页 > 解决方案 > SQL - 转置查询数据并添加了额外的行

问题描述

我再次来寻求您的指导。我实际上不确定这有多大可能,但我只能希望。

我有一个已经大量加入和聚合的查询,它会提取结果,如附图所示。

当前显示的查询

如前所述,这是一个已经大量编辑的查询,具有多个连接和聚合,以获取半小时数据并每小时汇总一次。

我想知道现在是否有可能转置数据,以便每个日期有 24 个单独的小时条目?

因此,与其在 2014 年 1 月 1 日在单独的列中每小时读取一行,不如将其更改为只有两列。一个用于日期/时间,一个用于每小时总数。

所以它看起来更像:

在此处输入图像描述

然后每天每个小时继续下降。

如果有帮助,我正在使用 SQL Server 2014。

先感谢您!

标签: sqlsql-server

解决方案


假设您的时间列名为time0, time1, ...,time23您可以编写

SELECT DateAdd(HOUR, 0, date) as DateTime, time0 as total from table
UNION
SELECT DateAdd(HOUR, 1, date) as DateTime, time1 as total from table
UNION
...
SELECT DateAdd(HOUR, 23, date) as DateTime, time23 as total from table

推荐阅读