SQL透视单个行以为数据创建新的列名

时间:2018-07-03 15:14:46

标签: sql

因此,我遇到的主要问题是sql中构造不良的表的受害者,但是由于不允许重构它,因此我试图找出如何解析SQL中的数据。目前,我正在使用SQL转储原始数据,然后将其粘贴到另一个程序中进行操作。是否可以在SQL中完成所有操作?表格类似于下图。从本质上讲,它是几个部分,我知道如何单独处理几个部分,但无法弄清楚如何将它们缝合在一起。任何帮助将不胜感激!

Example Tables

1 个答案:

答案 0 :(得分:0)

尝试此操作,假设您的数据库是Oracle。

      SELECT
         "Step"
        ,"StepName"
        ,"A1"
        ,"A2"
        ,"A3"
        ,"A4"
        ,"A5"
        ,"B3"
        ,"B8"
        ,"B9"
        ,"Interval"
  FROM
        (
        SELECT
               Session_Table."IDNum"
              ,Data_Table."Step"
              ,Data_Table."StepName"
              ,Data_Table."Data"
              ,Data_Table."Interval"
        FROM Session_Table
              --
              JOIN Data_Table
                    ON  Session_Table."xUniqueKey" = Data_Table."xUniqueKey"
        )
  PIVOT
        (
        MAX("Data")
        FOR "IDNum" IN
              (
               'A1'       AS "A1"
              ,'A2'       AS "A2"
              ,'A3'       AS "A3"
              ,'A4'       AS "A4"
              ,'A5'       AS "A5"
              ,'B3'       AS "B3"
              ,'B8'       AS "B8"
              ,'B9'       AS "B9"
              )
        )
  ;