我正在嘗試從 2 個表執行左連接。
表 1 我需要回傳所有行,但是在加入表 2 時,如果有很多匹配項,我只想在第一個匹配項上“附加”資料。
表格1
| ID | 月 |
|---|---|
| 01 | 八月 |
| 01 | 九月 |
| 02 | 八月 |
| 03 | 九月 |
表 2
| _ID | 服務日期 |
|---|---|
| 01 | 2022-09-01 |
| 02 | 2022-09-01 |
| 03 | 2022-09-01 |
最終結果
| ID | 月 | 服務日期 |
|---|---|---|
| 01 | 八月 | 2022-09-01 |
| 01 | 九月 | 無效的 |
| 02 | 八月 | 2022-09-01 |
| 03 | 九月 | 2022-09-01 |
現在我有一個簡單的左連接,可以根據需要匹配,我只需要找到一種方法在第二個匹配時不左連接資料。
我嘗試過的任何其他 JOIN 都會限制 table_1 資料。
我曾嘗試使用合并,但不知道這是否是正確的工具。
我想如果我可以跟蹤每個條件左連接有多少匹配項,我可以使用條件陳述句將連接歸零,然后是第一個匹配項。
我的 SQL:
SELECT table_1.id, table_1.month, table_2.service_date
FROM table_1
LEFT JOIN table_2 ON table_2.id = table_1.id
我希望我的問題是有道理的,任何尋找解決方案的方向都會受到贊賞。
uj5u.com熱心網友回復:
從您現有的left join查詢開始,您可以使用row_number()每行來識別“第一”行id,然后是條件邏輯:
select t1.id, t1.month,
case when row_number() over(partition by t1.id order by t2.month) = 1 then t2.service_date end service_date
from table1 t1
left join table2 t2 on t2.id = t1.id
row_number()對具有相同的記錄進行排名id;您可能想要比一個月更穩定的字串作為order by列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/526892.html
