开发者社区> 问答> 正文

SQL 服务器 - 使用 UNPIVOT 包括 NULL

SQL 服务器 - 使用 UNPIVOT 包括 NULL

展开
收起
贺贺_ 2019-12-02 20:19:39 445 0
1 条回答
写回答
取消 提交回答
  • 要保留 ULL,请使用 CROSS JOIN ...情况如下:

    select a.ID, b.column_name
    , column_value = 
        case b.column_name
          when 'col1' then a.col1
          when 'col2' then a.col2
          when 'col3' then a.col3
          when 'col4' then a.col4
        end
    from (
      select ID, col1, col2, col3, col4 
      from table1
      ) a
    cross join (
      select 'col1' union all
      select 'col2' union all
      select 'col3' union all
      select 'col4'
      ) b (column_name)
    
    

    而不是:

    select ID, column_name, column_value
    From (
      select ID, col1, col2, col3, col4
      from table1
      ) a
    unpivot (
      column_value FOR column_name IN (
        col1, col2, col3, col4)
      ) b
    
    

    具有列模式的文本编辑器使此类查询更易于编写。UltraEdit 有它,Emacs 也是如此。在 Emacs 中,它被称为矩形编辑。 您可能需要为 100 列编写脚本。

    2019-12-02 20:20:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载