希望我已经恰当地写了这个标题。
到目前为止我只有:
SELECT event_id
FROM prize
WHERE place <= 3
问题如下: 对于每个活动,在一行上列出可获得一等奖,二等奖和三等奖的奖金。
所以我需要列出PRIZE表中的EVENT_ID。然后将有三个单独的列显示第一,第二和第三奖。预期数据如下:
| event_id | First | Second | Third |
| 101 | 120 | 60 | 30 |
| 102 | 10 | 5 | 2 |
| 103 | 100 | 60 | 40 |
| 401 | 1000 | 500 | 250 |
表PRIZE具有列出的信息:
+ ------------- + ---------- + ---------- +
| 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
任何帮助表示赞赏
答案 0 :(得分:0)
我们可以使用条件聚合函数将行转移到列中。
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