2016-06-27 4 views
2

MAX CASE WHENとCTEを試しましたが、何らかの理由でこれを正確に把握できません。複数行を列にする方法

私のデータは次のようになります。テーブルに最大4行が存在することができ

SELECT RC, isMHy, eligible 
FROM test 

RC  isMHY eligible 
190B05 0  1 
190K00 1  0 

、私は(4行がある場合には12列)を次のようになりした結果にしたい

RC1 isMHY1 eligible1 RC2 isMHY2 eligible2 
190B05 0  1   190K00 1  0 

任意の提案は、あなたがROW_NUMBER()との条件付き集約を使用することができます

+0

あなたはもっと明確になることができますか? – NEER

+1

サンプルに3番目の行がある場合、出力に2番目の行があるか、出力に3つ以上の列がありますか?あなたの例から、ソースから2行を1行の出力に関連付けるためにどのロジックを使用するのかは不明です。 –

+0

申し訳ありませんが、最大で4行になることがあります。私は関連する行を1つの行に渡したい。各RCは、1つのisMhyに接続され、上記のように適格です。 – ajc101

答えて

2

をいただければ幸いです
SELECT MAX(CASE WHEN s.rnk = 1 THEN s.rc END) as rc1, 
     MAX(CASE WHEN s.rnk = 1 THEN s.ismhy END) as ismhy1, 
     MAX(CASE WHEN s.rnk = 1 THEN s.eligible END) as eligible1, 
     MAX(CASE WHEN s.rnk = 2 THEN s.rc END) as rc2, 
     MAX(CASE WHEN s.rnk = 2 THEN s.ismhy END) as ismhy2, 
     MAX(CASE WHEN s.rnk = 2 THEN s.eligible END) as eligible2, 
     .......... 
FROM(
    SELECT t.*, 
      ROW_NUMBER() OVER(ORDER BY SELECT 1) as rnk 
    FROM test t) s 
+0

? – Wanderer

+2

@Ullasこの質問のコメントを見てください "最大4行のみ" – sagi

+0

ありがとう、それは動作します! – ajc101

関連する問題