我正在從兩個不同的來源(來源 A 和來源 B)攝取資料。盡管資料可能來自兩個不同的來源,但記錄的 ID 可能同時存在于兩個來源中。
問題是,在某些情況下,一個來源比另一個來源更完整。在下面的示例中,源 A 的列 C 為 NULL,但源 B 具有完整的記錄。
我想豐富我得到完整記錄的資料。
- 注意:下面的“來源”欄位僅用于說明目的,而不是解決方案中的實際欄位。
| ID | 一種 | 乙 | C | D | 資源 |
|---|---|---|---|---|---|
| asc123 | 1 | 2 | 空值 | 4 | 來源 A |
| asc123 | 1 | 2 | 3 | 4 | 來源 B |
最終結果應如下所示:
| ID | 一種 | 乙 | C | D |
|---|---|---|---|---|
| asc123 | 1 | 2 | 3 | 4 |
我嘗試過這樣的事情,但沒有成功:
SELECT ID
,A
,B
,COALESCE(A.C, B.C) AS C
,D
,Source
FROM(
SELECT * FROM (
SELECT 'asc123' AS ID, 1 AS 'A', 2 AS 'B', NULL AS 'C', 4 AS 'D', 'Source A' AS 'Source'
) A
UNION
SELECT * FROM (
SELECT 'asc123' AS ID, 1 AS 'A', 2 AS 'B', 3 AS 'C', 4 AS 'D', 'Source B' AS 'Source'
) B
) X
uj5u.com熱心網友回復:
您可以聚合以洗掉 NULL 值:
with sampledata as (
select 'asc123' AS ID, 1 AS A, 2 AS B, NULL AS C, 4 as D, 'Source A' AS Source
union all
select 'asc123' AS ID, 1 AS A, 2 AS B, 3 AS C, 4 AS D, 'Source B' AS Source
)
select Id,
max(A)A, Max(B)B, Max(C)C, Max(D)D
from sampledata
group by Id
另請注意,對于列別名,如果您需要分隔它們,請使用[]or "",單引號用于文字值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/426917.html
標籤:sql sql服务器 数据库 天蓝色 sql 数据库 天蓝色 sqldw
下一篇:機器人框架與資料庫的連接
