1

次の要件で 2 つの行を結合するのに助けが必要です (表で示す方が簡単です..):

私のスキーマは次のようになります。

プロジェクト テーブル:

project_id  |   name
--------------------------------
1               Project1
2               Project2
3               Project3

project_program テーブル

id  |   project_id  |   program_id
-----------------------------------
1       1               1       
2       1               2   
2       3               2   

プログラム表:

program_id  |   type    |   name
---------------------------------------
1               A           test    
2               B           production

select ステートメントに必要な出力:

project_id  |   name     |  A      |    B
-------------------------------------------------------------------
1               Project1    test        production
2               Project2    (null)      (null)
2               Project3    (null)      production

これは私がこれまでに達成したことです:

SELECT 
  project.*,
  CASE WHEN program.type LIKE 'A' THEN program.name ELSE NULL END AS A,
  CASE WHEN program.type LIKE 'B' THEN program.name ELSE NULL END AS B
FROM 
  project
  LEFT JOIN project_program ON project.project_id = project_program.project_id  
  LEFT JOIN program ON project_program.program_id = program.program_id 

近いですが、完全ではありません。今、私の結果は次のようになります。

project_id  |   name     |  A       |   B
-------------------------------------------------------------------
1               Project1    test        (null)
1               Project1    (null)      production
2               Project2    (null)      (null)
3               Project3    (null)      production

私はオラクル11gを使用しています。

4

1 に答える 1