我想將一個表連接到自身以將一列的值應用于另一列中的所有值。邏輯是——當 WORKFLOW = "PICK" 時,就選擇這一天并將這一天用于整個 ID。
桌子
ID | Workflow | Day |
1 | PICK | 2022.11.01 |
1 | tew | 2022.11.02 |
1 | wte | 2022.11.03 |
1 | | 2022.11.04 |
1 | | 2022.11.05 |
2 | PICK | 2022.11.06 |
答案是
ID | Workflow | Day |
1 | PICK | 2022.11.01 |
1 | tew | 2022.11.01 |
1 | wte | 2022.11.01 |
1 | | 2022.11.01 |
1 | | 2022.11.01 |
2 | PICK | 2022.11.06 |
Workflow = 'PICK' 日期作為日期應用于整個 ID。
uj5u.com熱心網友回復:
您可能會考慮使用視窗函式而不是自連接。
WITH sample_data AS (
SELECT 1 ID, 'PICK' Workflow, '2022.11.01' Day UNION ALL
SELECT 1 ID, 'tew' Workflow, '2022.11.02' Day UNION ALL
SELECT 1 ID, 'wte' Workflow, '2022.11.03' Day UNION ALL
SELECT 1 ID, null Workflow, '2022.11.04' Day UNION ALL
SELECT 1 ID, null Workflow, '2022.11.05' Day UNION ALL
SELECT 2 ID, 'PICK' Workflow, '2022.11.06' Day
)
SELECT ID, Workflow,
STRING_AGG(IF(Workflow = 'PICK', Day, NULL)) OVER (PARTITION BY ID) AS Day
FROM sample_data;
查詢結果

如果您需要使用自連接,您可以考慮下面的查詢以及上面相同的輸出。
SELECT t.* EXCEPT(Day), s.Day
FROM sample_data t
LEFT JOIN sample_data s ON t.ID = s.ID AND s.Workflow = 'PICK';
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/534875.html
標籤:Google Cloud Collective 谷歌云平台加入谷歌大查询
