开发者社区> 问答> 正文

SQL 服务器 - 使用 UNPIVOT 包括 NULL

SQL 服务器 - 使用 UNPIVOT 包括 NULL

展开
收起
贺贺_ 2019-12-02 20:19:39 448 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
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS计算与存储分离架构实践 立即下载