嗨所以我有如下表
| 員工ID | 作業 | start_dt |
|---|---|---|
| 1 | 美國廣播公司 | 2021 年 1 月 1 日 |
| 1 | 定義 | 2021 年 5 月 1 日 |
| 2 | xyz | 2021 年 6 月 1 日 |
| 2 | 射頻 | 2021 年 8 月 1 日 |
| 2 | hgf | 2021 年 7 月 1 日 |
| 2 | 靜電放電 | 1999 年 1 月 1 日 |
我想知道是否有一種方法可以旋轉表格并將所有作業和日期放在同一行,
| 員工ID | 作業_a | start_dt_ 一個 | 作業_b | start_dt_b | 作業_c | start_dt_c | 作業_d | start_dt_d | 作業_e | start_dt_e | 作業_f | start_dt_f |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 美國廣播公司 | 2021 年 1 月 1 日 | 定義 | 2021 年 5 月 1 日 | ||||||||
| 2 | xyz | 2021 年 6 月 1 日 | 射頻 | 2021 年 8 月 1 日 | hgf | 2021 年 7 月 1 日 | 靜電放電 | 1999 年 1 月 1 日 |
(表名'JOB')
uj5u.com熱心網友回復:
您可以將條件聚合與ROW_NUMBER()分析函式一起使用,例如
WITH j AS
(
SELECT ROW_NUMBER() OVER (PARTITION BY employee_id ORDER BY start_dt) AS rn,
j.*
FROM job j
)
SELECT employee_id,
MAX(CASE WHEN rn = 1 THEN job END) AS job_a,
MAX(CASE WHEN rn = 1 THEN start_dt END) AS start_dt_a,
MAX(CASE WHEN rn = 2 THEN job END) AS job_b,
MAX(CASE WHEN rn = 2 THEN start_dt END) AS start_dt_b,
MAX(CASE WHEN rn = 3 THEN job END) AS job_c,
MAX(CASE WHEN rn = 3 THEN start_dt END) AS start_dt_c,
MAX(CASE WHEN rn = 4 THEN job END) AS job_d,
MAX(CASE WHEN rn = 4 THEN start_dt END) AS start_dt_d
FROM j
GROUP BY employee_id
ORDER BY employee_id
Demo
PS當前結果集的排序邏輯不夠清晰
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/414327.html
標籤:
上一篇:使用select陳述句更新記錄
