Sql-Server

選擇具有相同名稱及其可能 ID 的行(可能為 Null)

  • January 22, 2019

所以我有這個

對於每個使用者名,最多有一個唯一的關聯非空col2值,並且可能有一些空col2值。

+----------+-------+
| username | col2  |
+----------+-------+
| a        | 1r1   |
| a        | 1r1   |
| b        | 1z2   |
| b        | null  |
| c        | 1t3   |
| c        | null  |
| c        | 1t3   |
| d        | null  |
+----------+-------+

我正在尋找這樣的輸出:

+----------+------+
| username | col2 |
+----------+------+
| a        | 1r1  |
| b        | 1z2  |
| c        | 1t3  |
| d        | null |
+----------+------+

第一列是公司名稱,第二列是 ID,但有時(使用者錯誤輸入)有一些公司沒有 ID,我希望所有公司名稱都帶有可能的 ID

我相信它可能是,coalesce但我被困住了……

謝謝您的幫助

您可以使用GROUP BYandMIN()MAX()來擺脫空值並為每個使用者名顯示一行:

SELECT username, MIN(col2) AS col2
FROM tableX
GROUP BY username ;

或提前刪除它們並使用DISTINCT

SELECT DISTINCT username, col2
FROM tableX
WHERE col2 IS NOT NULL ;

上面的兩個查詢將顯示相同的結果,除非使用者名只有空值或具有不同(非空)col2值。

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