Heim >Datenbank >MySQL-Tutorial >Wie kann ich doppelte Werte aus der STRING_AGG-Ausgabe in SQL Server entfernen?

Wie kann ich doppelte Werte aus der STRING_AGG-Ausgabe in SQL Server entfernen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-24 06:57:09311Durchsuche

How Can I Remove Duplicate Values from STRING_AGG Output in SQL Server?

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:

  1. 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>
  2. 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:

verwenden
<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!

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