【问题标题】:Can you help me transpose this data from rows into columns?你能帮我把这些数据从行转换成列吗?
【发布时间】:2023-01-22 07:02:17
【问题描述】:

使用 MSSQL 服务器。

需要编写 SQL 将 INPUT 中的行转置为 OUTPUT 中的最终产品。

我该怎么做呢?

输入

YearNum     WeekNum DayNum  Hours
2023        1       1       28.40
2023        1       3       33.09
2023        1       4       35.20
2023        1       5       32.77
2023        1       6       37.15
2023        1       7       40.18
2023        2       1       29.43
2023        2       3       19.43
2023        2       4       36.62
2023        2       5       34.81
2023        2       6       38.50
2023        2       7       41.98
2023        3       1       29.09
2023        3       3       28.63
2023        3       4       41.59

输出

YearNum     WeekNum 1       2      3        4       5       6       7       Total_Hours
2023        1       28.40   0.0    33.09    35.20   32.77   37.15   40.18   206.79
2023        2       29.43   0.0    19.43    36.62   34.81   38.50   41.98   200.77
2023        3       29.09   0.0    28.63    41.59   0.0     0.0     0.0     99.31

请注意,即使输入没有该信息,输出也包含所有 7 天(1、2、3、4、5、6、7)。

谢谢您的帮助!

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    您可以尝试以下脚本,看看是否有帮助吗?

    SELECT 
        YearNum, WeekNum,
        MAX(CASE WHEN DayNum = 1 THEN Hours END) AS [1],
        MAX(CASE WHEN DayNum = 2 THEN Hours END) AS [2],
        MAX(CASE WHEN DayNum = 3 THEN Hours END) AS [3],
        MAX(CASE WHEN DayNum = 4 THEN Hours END) AS [4],
        MAX(CASE WHEN DayNum = 5 THEN Hours END) AS [5],
        MAX(CASE WHEN DayNum = 6 THEN Hours END) AS [6],
        MAX(CASE WHEN DayNum = 7 THEN Hours END) AS [7],
        SUM(Hours) AS Total_Hours
    FROM INPUT
    GROUP BY YearNum, WeekNum;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-03
      • 2022-12-17
      • 2013-01-16
      • 1970-01-01
      相关资源
      最近更新 更多