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

枢機卿以外の値を持つピボットテーブル

    複数の自己結合を必要としないソリューション:

    PIVOTができます ROW_NUMBER()の結果について 目的の出力を取得するための分析関数:

    SELECT *
    FROM   (
      SELECT t.*,
             ROW_NUMBER() OVER ( PARTITION BY test ORDER BY ROWNUM ) AS rn
      FROM   your_table t
    )
    PIVOT ( MAX( Reader ) AS reader, MAX( result ) AS result FOR rn IN ( 1, 2, 3 ) );
    

    出力

    TEST 1_READER 1_RESULT 2_READER 2_RESULT 3_READER 3_RESULT
    ---- -------- -------- -------- -------- -------- --------
       1 John          1.6 Jack          5.2
       2 Ursula        2.5 Jack          5.1
       3 Albert        3.0
    

    または、集計関数を使用するだけです:

    SELECT test,
           MAX( CASE rn WHEN 1 THEN reader END ) AS reader_1,
           MAX( CASE rn WHEN 1 THEN result END ) AS result_1,
           MAX( CASE rn WHEN 2 THEN reader END ) AS reader_2,
           MAX( CASE rn WHEN 2 THEN result END ) AS result_2,
           MAX( CASE rn WHEN 3 THEN reader END ) AS reader_3,
           MAX( CASE rn WHEN 3 THEN result END ) AS result_3
    FROM   (
      SELECT t.*,
             ROW_NUMBER() OVER ( PARTITION BY test ORDER BY ROWNUM ) AS rn
      FROM   your_table t
    )
    GROUP BY test;
    


    1. テーブルに影響を与えたSQLをログに記録するトリガーを作成しますか?

    2. 11.2.0.4および12.2の無料ESリリース日

    3. MariaDB JSON_COMPACT()の説明

    4. 文字列に基づいて動的にPHPオブジェクトを作成する