Heim >Datenbank >MySQL-Tutorial >Wie erhalte ich eindeutige Werte mithilfe von STRING_AGG in SQL Server?

Wie erhalte ich eindeutige Werte mithilfe von STRING_AGG in SQL Server?

DDD
DDDOriginal
2025-01-03 19:52:40197Durchsuche

How to Get Distinct Values Using STRING_AGG in SQL Server?

Eindeutige Werte mit STRING_AGG in SQL Server

Mit der STRING_AGG-Funktion in SQL Server 2017 können Sie Werte in einer einzelnen Zeichenfolge verketten. Es können jedoch doppelte Werte zurückgegeben werden, wenn ein Feld mit mehreren Vorkommen verkettet wird.

Betrachten Sie die folgende Abfrage:

SELECT 
    ProjectID,
    STRING_AGG( newID.value, ',') WITHIN GROUP (ORDER BY newID.value) AS NewField
FROM
    [dbo].[Data] WITH(NOLOCK)  
CROSS APPLY 
    STRING_SPLIT([bID],';') AS newID  
WHERE 
    newID.value IN ('O95833', 'Q96NY7-2')  
GROUP BY 
    ProjectID
ORDER BY 
    ProjectID

Diese Abfrage gibt die verketteten Werte zurück, aber Duplikate sind enthalten:

ProjectID NewField
2 O95833,O95833,O95833,Q96NY7-2,Q96NY7-2,Q96NY7-2
4 Q96NY7-2,Q96NY7-2

Um nur eindeutige Werte abzurufen, verwenden Sie das Schlüsselwort DISTINCT in a Unterabfrage:

SELECT 
 ProjectID
,STRING_AGG(value, ',') WITHIN GROUP (ORDER BY value) AS 
NewField
FROM (
    SELECT DISTINCT 
      ProjectID
    , newId.value 
    FROM [dbo].[Data] WITH (NOLOCK)  
    CROSS APPLY STRING_SPLIT([bID],';') AS newId  
    WHERE newId.value IN (   'O95833' , 'Q96NY7-2'  )  
) x
GROUP BY ProjectID
ORDER BY ProjectID

Diese Unterabfrage entfernt Duplikate, bevor die Funktion STRING_AGG angewendet wird. Das Endergebnis ist:

ProjectID NewField
2 O95833, Q96NY7-2
4 Q96NY7-2

Das obige ist der detaillierte Inhalt vonWie erhalte ich eindeutige Werte mithilfe von STRING_AGG in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn