在 SQL Server 中转置具有日期时间记录的表

艺术

我希望在下面转置一个临时表(Result列是DATETIME数据类型)以根据MeasureDSC聚合记录(创建两个新列:FirstNext)。

我正在使用 Microsoft SQL Server 2017 (v14.0.17224.0) 和 Management Studio。

当前表:

+-----------+----------+------------------+------------------+---------+------------+
|    vID    |   fID    |      RESULT      |     Recorded     | LineNBR | MeasureDSC |
+-----------+----------+------------------+------------------+---------+------------+
| 292837518 | 75174227 | 2018-01-01 12:53 | 2018-01-01 9:48  |       1 | First      |
| 292837518 | 75174227 | 2018-01-01 12:54 | 2018-01-01 9:48  |       1 | Next       |
| 295376471 | 76107803 | 2018-01-01 22:51 | 2018-01-01 23:03 |       1 | First      |
| 295376471 | 76107803 | 2018-01-01 22:51 | 2018-01-01 23:03 |       1 | Next       |
| 301032810 | 78252847 | 2018-01-01 13:24 | 2018-01-01 13:45 |       1 | First      |
| 301032810 | 78252847 | NULL             | 2018-01-01 13:45 |       1 | Next       |
| 301867286 | 78566265 | 2018-01-01 14:40 | 2018-01-01 15:00 |       1 | First      |
| 301867286 | 78566265 | 2018-01-01 14:50 | 2018-01-01 15:00 |       1 | Next       |
| 302791918 | 78917501 | 2018-01-01 15:01 | 2018-01-01 7:30  |       1 | First      |
| 302791918 | 78917501 | 2018-01-01 15:05 | 2018-01-01 7:30  |       1 | Next       |
| 304444538 | 79538091 | 2018-01-01 8:00  | 2018-01-01 8:00  |       1 | First      |
| 304444538 | 79538091 | 2018-01-01 8:04  | 2018-01-01 8:00  |       1 | Next       |
| 304478684 | 79550758 | 2018-01-01 14:30 | 2018-01-01 17:44 |       1 | First      |
| 304478684 | 79550758 | 2018-01-01 15:30 | 2018-01-01 17:44 |       1 | Next       |
+-----------+----------+------------------+------------------+---------+------------+

预期的输出应该是这样的:

+-----------+----------+------------------+------------------+------------------+
|    vID    |   fID    |     Recorded     |      First       |       Next       |
+-----------+----------+------------------+------------------+------------------+
| 292837518 | 75174227 | 2018-01-01 9:48  | 2018-01-01 12:53 | 2018-01-01 12:54 |
| 295376471 | 76107803 | 2018-01-01 23:03 | 2018-01-01 22:51 | 2018-01-01 22:51 |
| 301032810 | 78252847 | 2018-01-01 13:45 | 2018-01-01 13:24 | NULL             |
| 301867286 | 78566265 | 2018-01-01 15:00 | 2018-01-01 14:40 | 2018-01-01 14:50 |
| 302791918 | 78917501 | 2018-01-01 7:30  | 2018-01-01 15:01 | 2018-01-01 15:05 |
| 304444538 | 79538091 | 2018-01-01 8:00  | 2018-01-01 8:00  | 2018-01-01 8:04  |
| 304478684 | 79550758 | 2018-01-01 17:44 | 2018-01-01 14:30 | 2018-01-01 15:30 |
+-----------+----------+------------------+------------------+------------------+

我试图使用 PIVOT 函数,但一直收到错误消息:“无效的列名‘RESULT’。”

我的代码:

SELECT 
    vID, fID,
    RESULT,
    Recorded,
    [First] AS [First],
    [Next] AS [Next]
FROM 
    (SELECT 
         vID, fID, RESULT, Recorded, MeasureDSC
     FROM 
         #temp) x
PIVOT 
    (MAX(RESULT) FOR MeasureDSC IN ([First], [Next])) p

将不胜感激任何帮助!

约格什·夏尔马

为什么不直接进行聚合:

SELECT vID, fID, Recorded,
       MAX(CASE WHEN MeasureDSC = 'First' THEN RESULT END) AS First,       
       MAX(CASE WHEN MeasureDSC = 'Next' THEN RESULT  END) AS Next
FROM #temp 
GROUP BY vID, fID, Recorded;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有日期时间的SQL Server查询

来自分类Dev

在 SQL Server 中转换为日期时间

来自分类Dev

使用SQL Server中不同记录的开始日期和结束日期创建具有数据范围的临时表

来自分类Dev

SQL Server日期在Analysis Services中转换为日期/时间

来自分类Dev

在 SQL Server 中转置行

来自分类Dev

在SQL Server中转换非标准日期时间字段

来自分类Dev

SQL Server日期时间

来自分类Dev

SQL Server分页具有大量记录

来自分类Dev

SQL Server分页具有大量记录

来自分类Dev

SQL Server查询具有日期的联接

来自分类Dev

SQL Server-获取具有无效日期格式的所有记录

来自分类Dev

SQL Server:如何从datetime列中选择具有特定日期的记录

来自分类Dev

检索SQL Server(2005)中记录的日期时间的时区

来自分类Dev

SQL Server:显示最新记录日期和时间

来自分类Dev

在SQL Server中转置国家和城市

来自分类Dev

在SQL Server 2012中转置

来自分类Dev

在 SQL Server 中转换 varchar 日期格式时出现日期时间转换错误

来自分类Dev

SQL Server 2008在表中插入缺少日期的新记录

来自分类Dev

具有Max功能的其他表中不存在的SQL Server 2014 Select记录

来自分类Dev

表变量在SQL Server中可以具有的最大记录数

来自分类Dev

从SQL Server 2012表中删除具有身份的重复记录

来自分类Dev

具有Max功能的其他表中不存在的SQL Server 2014 Select记录

来自分类Dev

在 SQL Server 表中,如何根据对具有 JSON 值的列的 JSON 搜索过滤记录

来自分类Dev

SQL Server:在表中的位置转换日期时间

来自分类Dev

SQL Server 2016更新表中某行的日期时间属性

来自分类Dev

在SQL Server中选择具有多个行条件的记录

来自分类Dev

Concat记录SQL Server

来自分类Dev

链接的 SQL Server 记录

来自分类Dev

SQL Server中具有相同列的Logtable日期的DateDiff

Related 相关文章

  1. 1

    具有日期时间的SQL Server查询

  2. 2

    在 SQL Server 中转换为日期时间

  3. 3

    使用SQL Server中不同记录的开始日期和结束日期创建具有数据范围的临时表

  4. 4

    SQL Server日期在Analysis Services中转换为日期/时间

  5. 5

    在 SQL Server 中转置行

  6. 6

    在SQL Server中转换非标准日期时间字段

  7. 7

    SQL Server日期时间

  8. 8

    SQL Server分页具有大量记录

  9. 9

    SQL Server分页具有大量记录

  10. 10

    SQL Server查询具有日期的联接

  11. 11

    SQL Server-获取具有无效日期格式的所有记录

  12. 12

    SQL Server:如何从datetime列中选择具有特定日期的记录

  13. 13

    检索SQL Server(2005)中记录的日期时间的时区

  14. 14

    SQL Server:显示最新记录日期和时间

  15. 15

    在SQL Server中转置国家和城市

  16. 16

    在SQL Server 2012中转置

  17. 17

    在 SQL Server 中转换 varchar 日期格式时出现日期时间转换错误

  18. 18

    SQL Server 2008在表中插入缺少日期的新记录

  19. 19

    具有Max功能的其他表中不存在的SQL Server 2014 Select记录

  20. 20

    表变量在SQL Server中可以具有的最大记录数

  21. 21

    从SQL Server 2012表中删除具有身份的重复记录

  22. 22

    具有Max功能的其他表中不存在的SQL Server 2014 Select记录

  23. 23

    在 SQL Server 表中,如何根据对具有 JSON 值的列的 JSON 搜索过滤记录

  24. 24

    SQL Server:在表中的位置转换日期时间

  25. 25

    SQL Server 2016更新表中某行的日期时间属性

  26. 26

    在SQL Server中选择具有多个行条件的记录

  27. 27

    Concat记录SQL Server

  28. 28

    链接的 SQL Server 记录

  29. 29

    SQL Server中具有相同列的Logtable日期的DateDiff

热门标签

归档