Heim >Datenbank >MySQL-Tutorial >Wie kann ich doppelte Werte aus der STRING_AGG-Ausgabe in SQL Server entfernen?
Umgang mit doppelten Werten innerhalb der STRING_AGG-Funktion von SQL Server
Die in SQL Server 2017 eingeführte STRING_AGG-Funktion von SQL Server verkettet Spaltenwerte zu einer einzelnen Zeichenfolge. Duplikate werden jedoch nicht automatisch entfernt. In diesem Artikel wird ein zweistufiger Ansatz beschrieben, um unterschiedliche Werte innerhalb der aggregierten Zeichenfolge zu erreichen.
Die Zwei-Schritte-Lösung
Der Schlüssel besteht darin, einen bestimmten Vorgang vor der Verwendung von STRING_AGG durchzuführen. Dabei handelt es sich um einen zweistufigen Gruppierungsprozess:
Anfängliche Gruppierung für eindeutige Werte: Gruppieren Sie zunächst die Daten nach der/den Spalte(n), die eindeutig sein sollen, zusammen mit allen anderen erforderlichen Spalten für Ihr Endergebnis. Dadurch werden doppelte Zeilen an der Quelle entfernt.
<code class="language-sql">WITH Sitings AS ( SELECT * FROM (VALUES (1, 'Florida', 'Orlando', 'bird'), (2, 'Florida', 'Orlando', 'dog'), (3, 'Arizona', 'Phoenix', 'bird'), (4, 'Arizona', 'Phoenix', 'dog'), (5, 'Arizona', 'Phoenix', 'bird'), (6, 'Arizona', 'Phoenix', 'bird'), (7, 'Arizona', 'Phoenix', 'bird'), (8, 'Arizona', 'Flagstaff', 'dog') ) F (ID, State, City, Siting) ), CTE_Animals AS ( SELECT State, City, Siting FROM Sitings GROUP BY State, City, Siting )</code>
Endgültige Gruppierung und Aggregation: Als nächstes gruppieren Sie die Ergebnisse aus dem ersten Schritt nach Ihren gewünschten Spalten und wenden STRING_AGG an, um die unterschiedlichen Werte zu verketten.
<code class="language-sql">SELECT State, City, COUNT(1) AS [# Of Sitings], STRING_AGG(Siting,',') AS Animals FROM CTE_Animals GROUP BY State, City ORDER BY State, City;</code>
Wichtiger Hinweis zur Saitenlänge:
Wenn Ihre verkettete Zeichenfolge möglicherweise die 8000-Zeichen-Grenze von VARCHAR überschreitet, wandeln Sie die Werte in VARCHAR(MAX)
um, bevor Sie STRING_AGG
:
<code class="language-sql">STRING_AGG(CAST(Siting AS VARCHAR(MAX)), ',') AS Animals</code>
Diese Methode erzeugt effektiv ein STRING_AGG
Ergebnis, das nur eindeutige Werte enthält.
Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Werte aus der STRING_AGG-Ausgabe in SQL Server entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!