2

私は2つのテーブルを持っています:

表1

ID | 名前
----------------------------------------------
1 | abc
2 | デフォルト

テーブル2

table1id | nr_name | nr_val
----------------------------------------------
1 | 7 | 123
1 | 9 | 321
2 | 7 | 432


この結果を得るには、どの SQL コードが必要ですか?

結果

ID | 名前 | nr7 | nr9
----------------------------------------------
1 | abc | 123 | 321
2 | デフ | 432 | 0

nr_name は 7 または 9 しか指定できず、table2 の構造を変更することはできません (後で nr_name タイプを追加します)。

4

2 に答える 2

1

これを試して:

sELECT 
  t1.id,
  t1.name,
  MAX(CASE WHEN t2.nr_name = 7 THEN t2.nr_val END) AS 'nr7',
  MAX(CASE WHEN t2.nr_name = 9 THEN t2.nr_val END) AS 'nr9'
FROM table1 AS t1
INNER JOIN  table2 AS t2 ON t1.id = t2.table1id
WHERE t2.name IN (7, 9)
GROUP BY t1.id, t1.name
于 2013-04-28T10:31:44.640 に答える
0
SELECT t1.id,t1.name,
       CASE WHEN t2.nr_name = 7 THEN t2.nr_val ELSE 0 END AS 'nr7',
       CASE WHEN t2.nr_name = 9 THEN t2.nr_val ELSE 0 END AS 'nr9'
FROM table1 AS t1
INNER JOIN  table2 AS t2 ON t1.id = t2.table1id
WHERE t2.name IN (7,9)
GROUP BY t1.id, t1.name
于 2013-04-28T10:56:25.590 に答える