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

OracleSQL-N行の列値を1行のN列に変換します

    説明が返される順序を気にしないと仮定します(つまり、JeremySmithがDescription1を正しく持つことができます。 または「混乱」とDescription2 「背の高い」の場合)、行番号をピボットする必要があります。説明が返される順序が気になる場合は、ORDER BYを追加できます。 ROW_NUMBERのウィンドウ関数の句 分析関数

    SELECT firstName, 
           lastName,
           MAX( CASE WHEN rn = 1 THEN description ELSE NULL END ) description1,
           MAX( CASE WHEN rn = 2 THEN description ELSE NULL END ) description2,
           MAX( CASE WHEN rn = 3 THEN description ELSE NULL END ) description3
      FROM (SELECT firstName,
                   lastName,
                   description,
                   row_number() over (partition by lastName, firstName) rn
              FROM descriptions
                   JOIN people USING (firstName, lastName)
             WHERE age >= 25)
       GROUP BY firstname, lastname
    

    余談ですが、年齢を保存して毎年年齢を更新していると想定するのではなく、実際に生年月日を保存して年齢を計算していることを願っています。



    1. EntityFramework6トランザクションのロールバック

    2. MySQLクエリを介して受信した複数の電子メールアドレスにPHPメーラーを送信する方法

    3. SQLServerからの出力パラメータを使用してOracleストアドプロシージャを呼び出す

    4. LinuxにMicrosoftSQLをインストールする方法