簡體   English   中英

SQL子查詢-清單數據

[英]SQL Sub Queries - Listing data

希望我已經適當地寫了標題。

到目前為止,我所擁有的是:

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

任何幫助表示贊賞

我們可以使用條件聚合函數將您的行旋轉為列。

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

在這里演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM