【问题标题】:UNPIVOT in sql server with two input values (converting from Oracle to sql server)具有两个输入值的 sql server 中的 UNPIVOT(从 Oracle 转换为 sql server)
【发布时间】:2022-11-01 21:17:43
【问题描述】:

在 Oracle 中,我写了一个使用 UNPIVOT 的语句。那部分看起来像这样:

''' unpivot ((value, prev_value) for col in ( (title, prev_title) as 'title' , (stage, prev_stage) as 'stage' , (value, prev_value) as 'value' '''

到目前为止,我无法找到一种对 sql server 执行相同操作的方法。任何建议l

【问题讨论】:

    标签: sql sql-server unpivot


    【解决方案1】:

    使用UNION ALL

    SELECT other_column1,
           other_column2,
           'title' AS col,
           title AS value,
           prev_title AS prev_value
    FROM   table_name
    WHERE  title IS NOT NULL
    AND    prev_title IS NOT NULL
    UNION ALL
    SELECT other_column1,
           other_column2,
           'stage' AS col,
           stage AS value,
           prev_stage AS prev_value
    FROM   table_name
    WHERE  stage IS NOT NULL
    AND    prev_stage IS NOT NULL
    UNION ALL
    SELECT other_column1,
           other_column2,
           'value' AS col,
           value,
           prev_value
    FROM   table_name
    WHERE  value IS NOT NULL
    AND    prev_value IS NOT NULL
    

    fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-24
      • 2010-11-28
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      相关资源
      最近更新 更多