【发布时间】:2022-01-16 18:55:21
【问题描述】:
我有 2 个表需要从中选择数据。
表 1:
| ID | name |
|---|---|
| 1 | John |
| 2 | Mark |
| 3 | Anna |
表2:
| Person_ID | type | year |
|---|---|---|
| 1 | born | 1920 |
| 1 | graduated | 1950 |
| 1 | died | 2000 |
| 2 | born | 1940 |
| 2 | graduated | 1960 |
| 2 | died | 2011 |
我想编写一个查询,将它们全部放入同一行:
| id | name | born | grad | died |
|---|---|---|---|---|
| 1 | John | 1920 | 1950 | 2000 |
我试过了:
SELECT
t1.id AS id, t1.name AS name,
CASE WHEN t2.type = 'born' THEN t2.year END AS born,
CASE WHEN t2.type = 'graduated' THEN t2.year END AS grad,
CASE WHEN t2.type = 'died' THEN t2.year END AS died
FROM
table1 t1
INNER JOIN
table2 t2 ON t1.id = t2.Person_ID
WHERE
t1.id = 1
GROUP BY
t1.id, t1.name, t2.type, t2.year
这是我现在得到的结果:
| id | name | born | grad | died |
|---|---|---|---|---|
| 1 | John | 1920 | null | null |
| 1 | John | null | 1950 | null |
| 1 | John | null | null | 2000 |
【问题讨论】: