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

複数の列を1つの列に変換するOracleクエリ

    UNPIVOTを使用できます このような1つの行に対して、値を持つ列のみを取得します

    SELECT colvalue 
      FROM
    (
      SELECT * 
        FROM Table1
      UNPIVOT INCLUDE NULLS
      (
        colvalue FOR cols IN (col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, ... col50)
      )
    );
    

    サンプル出力:

    | COLVALUE |
    ------------
    |        1 |
    |        2 |
    |   (null) |
    |..........|
    

    ピボットテーブルの列名を持つ列が必要な場合は、外側の選択を破棄するだけです

    SELECT * 
      FROM Table1
    UNPIVOT INCLUDE NULLS
    (
      colvalue FOR cols IN (col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, ... col50)
    );
    

    サンプル出力:

    |  COLS | COLVALUE |
    --------------------
    |  COL1 |        1 |
    |  COL2 |        2 |
    |  COL3 |   (null) |
    | ..... |......... |
    

    これがSQLFiddle です。 デモ



    1. MySQLクエリで正しいCOUNT()を取得しない(以前に変更)

    2. ダンプファイルをOracle11gr2にインポートするとエラーが発生します

    3. HeidiSQLを使用してVagrantに接続できません:「localhost」上のMySQLサーバーに接続できません

    4. MacでMySQLWorkbenchに接続できません。 '127.0.0.1'(61)MacMacintoshでMySQLサーバーに接続できません