Heim >Datenbank >MySQL-Tutorial >Wie erhalte ich eindeutige Werte mithilfe von 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!