我有一張桌子 T1
| Col1 | Col2 | Col3 |
|---|---|---|
| 1 | 一個 | A1 |
| 2 | 一個 | A2 |
| 3 | 一個 | A3 |
| 4 | 一個 | A4 |
| 6 | 乙 | B1 |
| 7 | 乙 | B2 |
| 8 | 乙 | B3 |
我有另一個看起來像這樣的表 T2:
| TC1 | TC2 |
|---|---|
| 1 | A1 |
| 2 | A6 |
| 3 | A7 |
| 4 | A8 |
| 6 | B7 |
| 7 | B9 |
| 8 | B0 |
我想確定 T1 中的 Col3 是否具有與 T2 的 TC2 匹配的任何值,然后創建一個新列 (Col4) 以標記所有包含相同 Col3 的 Col2,如果不是,則為“不匹配” . 請參閱下面的示例所需輸出。我想我可能需要使用子查詢,但不確定如何。
因為 A1 存在于 T1 和 T2 中,所以同一個集群 (A) 的 Col2 中的所有行都需要將 Col4 標記為“匹配”
| Col1 | Col2 | Col3 | Col4 |
|---|---|---|---|
| 1 | 一個 | A1 | 比賽 |
| 2 | 一個 | A2 | 比賽 |
| 3 | 一個 | A3 | 比賽 |
| 4 | 一個 | A4 | 比賽 |
| 6 | 乙 | B1 | 沒有匹配 |
| 7 | 乙 | B2 | 沒有匹配 |
| 8 | 乙 | B3 | 沒有匹配 |
uj5u.com熱心網友回復:
似乎您可以使用 aLEFT JOIN和條件視窗聚合:
SELECT T1.Col1,
T1.Col2,
T1.Col3,
MIN(CASE T1.Col3 WHEN T2.Col3 THEN 'Match' ELSE 'No Match' END) OVER (PARTITION BY T1.Col2) AS Col4
FROM dbo.Table1 T1
LEFT JOIN dbo.Table2 T2 ON T1.Col3 = T2.TC2; --I really hope these aren't your free column/object names
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/424995.html
下一篇:將所有出現的正則運算式查找為陣列
