Sql-Server

當不同的值返回 NULL 否則返回值

  • June 28, 2022

以下是我獲得的數據類型的範例(由不同使用者收集):

我想知道兩個使用者何時為同一個名字收集了不同的姓氏。

我想要得到的輸出是:

如果所有使用者都收集了相同的,我會看到姓氏,如果有差異,我會看到 NULL。

我嘗試搜尋網際網路,但我無法正確描述我正在搜尋的內容。

我嘗試使用 CASE 請求,但沒有成功。

這可以使用COUNT(DISTINCT ...). 按 對結果進行分組name。計算每個名字的不同姓氏。如果計數不同於 1,則將姓氏顯示為空,否則顯示實際姓氏,例如 using MAX,如下所示:

SELECT
 name
, surname = CASE COUNT(DISTINCT surname) WHEN 1 THEN MAX(surname) END
FROM
 dbo.People
GROUP BY
 name
;

您必須應用聚合函式,surname因為分組name僅按。由於您僅在不同計數為 1 時顯示它,因此您選擇哪個實例並不重要,因為它們都是相同的。 MIN也可以。

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