SQL 子查询 - 列出数据
SQL Sub Queries - Listing data
希望我写的标题合适。
到目前为止我只有:
SELECT event_id
FROM prize
WHERE place <= 3
问题如下:
对于每个项目,在一行中列出一等奖、二等奖和三等奖的奖金。
所以我需要列出奖品 table 中的 EVENT_ID。然后将有三个单独的列显示一等奖、二等奖和三等奖。预期数据如下:
| event_id | First | Second | Third |
| 101 | 120 | 60 | 30 |
| 102 | 10 | 5 | 2 |
| 103 | 100 | 60 | 40 |
| 401 | 1000 | 500 | 250 |
table奖品信息如下:
+ ------------- + ---------- + ---------- +
| Event_id | Place | Money |
+ ------------- + ---------- + ---------- +
| 101 | 1 | 120 |
| 101 | 2 | 60 |
| 101 | 3 | 30 |
| 102 | 1 | 10 |
| 102 | 2 | 5 |
| 102 | 3 | 2 |
| 103 | 1 | 100 |
| 103 | 2 | 60 |
| 103 | 3 | 40 |
| 401 | 1 | 1000 |
| 401 | 2 | 500 |
| 401 | 3 | 250 |
| 401 | 4 | 100 |
| 401 | 5 | 50 |
| NULL | NULL | NULL |
+ ------------- + ---------- + ---------- +
15 rows
感谢任何帮助
我们可以使用条件聚合函数将您的行转换为列。
select event_id,
max(case when place = 1 then money end) first,
max(case when place = 2 then money end) second,
max(case when place = 3 then money end) third
from prize
where event_id is not null
group by event_id
希望我写的标题合适。
到目前为止我只有:
SELECT event_id
FROM prize
WHERE place <= 3
问题如下: 对于每个项目,在一行中列出一等奖、二等奖和三等奖的奖金。
所以我需要列出奖品 table 中的 EVENT_ID。然后将有三个单独的列显示一等奖、二等奖和三等奖。预期数据如下:
| event_id | First | Second | Third |
| 101 | 120 | 60 | 30 |
| 102 | 10 | 5 | 2 |
| 103 | 100 | 60 | 40 |
| 401 | 1000 | 500 | 250 |
table奖品信息如下:
+ ------------- + ---------- + ---------- +
| Event_id | Place | Money |
+ ------------- + ---------- + ---------- +
| 101 | 1 | 120 |
| 101 | 2 | 60 |
| 101 | 3 | 30 |
| 102 | 1 | 10 |
| 102 | 2 | 5 |
| 102 | 3 | 2 |
| 103 | 1 | 100 |
| 103 | 2 | 60 |
| 103 | 3 | 40 |
| 401 | 1 | 1000 |
| 401 | 2 | 500 |
| 401 | 3 | 250 |
| 401 | 4 | 100 |
| 401 | 5 | 50 |
| NULL | NULL | NULL |
+ ------------- + ---------- + ---------- +
15 rows
感谢任何帮助
我们可以使用条件聚合函数将您的行转换为列。
select event_id,
max(case when place = 1 then money end) first,
max(case when place = 2 then money end) second,
max(case when place = 3 then money end) third
from prize
where event_id is not null
group by event_id