sql >> データベース >  >> RDS >> Sqlserver

SQLServer-UNPIVOTを使用してNULLを含める

    NULLを保持するには、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列のスクリプトを作成する必要があるかもしれません。



    1. tsqlでは、同時実行の観点から安全なSelectステートメントを含むInsertはありますか?

    2. Neo4j-Cypherを使用して関係を作成する

    3. PostgreSQLのRPAD()関数

    4. Pythonモジュールcx_Oracleモジュールが見つかりませんでした