考慮下面的 SQL 查詢,Person 將有一個個人或公司。牢記這一點,我進行了此查詢以統一資料。我希望它只有 TaxNumber 列的非空行(來自個人或公司)。但是該查詢回傳兩列,即 null 和帶有值的一列。
SELECT
PR.Id AS PersonId,
PR.Title AS PersonTitle,
IA.TaxNumber AS TaxNumber,
CP.TaxNumber AS TaxNumber
FROM
person AS PR
LEFT JOIN individual AS IA ON IA.PersonID = PR.Id
LEFT JOIN company AS CP ON CP.PersonID = PR.Id
uj5u.com熱心網友回復:
您的術語有點偏離,這很可能是尋找解決方案的問題的一部分。UNION 結合資料集 {1,3,5} Union {2,4} 給我們 {1,2,3,4,5}。當一個為 NULL 時,您想“組合”列。 Coalesce()有效地做到這一點。
Coalesce()將回傳在一系列物件中遇到的第一個非空值。 Coalesce()與資料庫無關(意味著它在大多數 RDBMS 中都可以找到。但是,如果它不起作用:指定您正在使用的 RDBMS;可能有類似的功能。
SELECT
PR.Id AS PersonId,
PR.Title AS PersonTitle,
Coalesce(IA.TaxNumber, CP.TaxNumber) AS TaxNumber
FROM
person AS PR
LEFT JOIN individual AS IA ON IA.PersonID = PR.Id
LEFT JOIN company AS CP ON CP.PersonID = PR.Id
例子:
--------------- --------------- ---------
| IA Tax number | CP Tax number | Returns |
--------------- --------------- ---------
| 123 | <NULL> | 123 |
| <NULL> | 456 | 456 |
| 987 | 654 | 987 |
| <NULL> | <NULL> | <NULL> |
--------------- --------------- ---------
因此,如果您希望 CP 稅號優先,只需在合并中切換順序即可。Coalesce(CP.TaxNumber, IA.TaxNumber,'MISSING' )
| 987 | 654 | 654 |
| <NULL> | <NULL> | MISSING |
請注意,如果我們想從雙方調出資料“丟失”,我添加了第三個選項。但<NULL>結果將意味著同樣的事情。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/437052.html
標籤:sql
