Null

SQL 僅在數據可用時合併記錄

  • November 1, 2018

我有一個格式如下的表:

id      description1       description2
123     null               abcd
123     zyxw               abcd
124     null               efgh
124     vuts               efgh
125     null               ijkl
126     null               mnop

基本上,我希望 SQL 返回一個包含 description1 的記錄,123124不是為每個記錄顯示兩個記錄,一個具有空 description1 的記錄。但是如果任何一條id和description2相同的記錄中都沒有description1,就直接顯示null。這樣顯示的數據將是:

id    description1    description2
123   zyxw            abcd
124   vuts            efgh
125   null            ijkl
126   null            mnop
SELECT id,
description1 = MAX(description1),
description2 = MAX(description2)
FROM dbo.MyTable
GROUP BY id
ORDER BY id;

使用 Teradata,我能夠通過以下方式解決這個問題:

SELECT id, description1, description2 FROM dbo.MyTable
QUALIFY ROW_NUMBER() OVER (PARTITION BY id ORDER BY description1 nulls last) = 1

但是,由於我沒有指定 Teradata 並且 Andy 的通用答案效果很好,它絕對是最好的!

引用自:https://dba.stackexchange.com/questions/147784