Heim > Datenbank > MySQL-Tutorial > Wie kann ich STRING_AGG von SQL Server verwenden, um eindeutige Werte und deren verkettete Zeichenfolge abzurufen?

Wie kann ich STRING_AGG von SQL Server verwenden, um eindeutige Werte und deren verkettete Zeichenfolge abzurufen?

DDD
Freigeben: 2025-01-24 06:51:13
Original
688 Leute haben es durchsucht

How Can I Use SQL Server's STRING_AGG to Get Distinct Values and Their Concatenated String?

Verwendung von STRING_AGG von SQL Server für eindeutige Werte und Verkettung

Die STRING_AGG-Funktion von SQL Server verkettet effizient Werte aus mehreren Zeilen. Das direkte Erhalten unterschiedlicher Werte und ihrer verketteten Zeichenfolge erfordert jedoch einen etwas komplexeren Ansatz. Die Herausforderung besteht darin, die Funktionalität von COUNT(DISTINCT ...) mit der String-Aggregation zu kombinieren.

Eine gängige Lösung beinhaltet einen zweistufigen Gruppierungsprozess. Die erste GROUP BY-Klausel identifiziert eindeutige Kombinationen relevanter Spalten (z. B. Bundesland, Stadt, Standort) und eliminiert so Duplikate. Das zweite GROUP BY aggregiert dann diese eindeutigen Kombinationen und verwendet STRING_AGG, um die unterschiedlichen Werte zu verketten. Diese Methode liefert sowohl eine Anzahl unterschiedlicher Werte als auch die verkettete Zeichenfolge.

Hier ist ein Beispiel, das diese Technik demonstriert:

<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')
    ) AS F (ID, State, City, Siting)
),
CTE_Animals AS (
    SELECT State, City, Siting
    FROM Sitings
    GROUP BY State, City, Siting
)
SELECT
    State, City, COUNT(*) AS [# Of Sitings], STRING_AGG(Siting, ',') AS Animals
FROM CTE_Animals
GROUP BY State, City
ORDER BY State, City;</code>
Nach dem Login kopieren

Diese Abfrage erzeugt einen Ergebnissatz, der unterschiedliche Tiersichtungen pro Stadt und Bundesland zeigt:

<code>+---------+-----------+--------------+----------+
|  State  |   City    | # Of Sitings | Animals  |
+---------+-----------+--------------+----------+
| Arizona | Flagstaff |            1 | dog      |
| Arizona | Phoenix   |            2 | bird,dog |
| Florida | Orlando   |            2 | bird,dog |
+---------+-----------+--------------+----------+</code>
Nach dem Login kopieren

Umgang mit langen Zeichenfolgen:

Wenn die verkettete Zeichenfolge von Standorten die 8000-Zeichen-Grenze von varchar überschreitet, ist eine explizite Umwandlung der Spalte Siting in varchar(max) vor der Verwendung von STRING_AGG erforderlich, um eine Kürzung zu vermeiden:

<code class="language-sql">STRING_AGG(CAST(Siting AS VARCHAR(MAX)), ',') AS Animals</code>
Nach dem Login kopieren

Dadurch wird sichergestellt, dass die verkettete Zeichenfolge längere Ergebnisse aufnehmen kann.

Das obige ist der detaillierte Inhalt vonWie kann ich STRING_AGG von SQL Server verwenden, um eindeutige Werte und deren verkettete Zeichenfolge abzurufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage