Null
SQL 僅在數據可用時合併記錄
我有一個格式如下的表:
id description1 description2 123 null abcd 123 zyxw abcd 124 null efgh 124 vuts efgh 125 null ijkl 126 null mnop
基本上,我希望 SQL 返回一個包含 description1 的記錄,
123
而124
不是為每個記錄顯示兩個記錄,一個具有空 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 的通用答案效果很好,它絕對是最好的!