Eindeutige Werte mit der STRING_AGG-Funktion von SQL Server 2017 generieren
Die STRING_AGG
-Funktion in SQL Server 2017 unterstützt unterschiedliche Werte nicht direkt. Mit einem zweistufigen Ansatz ist es jedoch möglich, einzigartige aggregierte Ergebnisse zu erzielen. Diese Methode vermeidet die ungültige Syntax von STRING_AGG(DISTINCT column, ',')
.
Die Lösung beinhaltet einen Common Table Expression (CTE) zur Vorverarbeitung der Daten. Der CTE gruppiert die Daten, um Duplikate vor der endgültigen Aggregation zu eliminieren.
Das folgende Beispiel demonstriert diese Technik. Der anfängliche Sitings
CTE liefert Beispieldaten. Der CTE_Animals
CTE gruppiert dann nach State
, City
und Siting
, um redundante Einträge zu entfernen. Die Hauptabfrage verwendet dann STRING_AGG
, um die eindeutigen Siting
-Werte für jede State
- und City
-Kombination zu verketten.
<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 ) SELECT State, City, COUNT(*) AS [# Of Sitings], STRING_AGG(Siting,',') AS Animals FROM CTE_Animals GROUP BY State, City ORDER BY State, City;</code>
Dieser Ansatz garantiert, dass die letzte Animals
-Spalte nur eindeutige Tiersichtungen für jeden Standort enthält, während die # Of Sitings
-Spalte die eindeutige Anzahl widerspiegelt. Die ORDER BY
-Klausel gewährleistet eine konsistente und vorhersehbare Ausgabereihenfolge.
Das obige ist der detaillierte Inhalt vonWie kann ich mit STRING_AGG in SQL Server 2017 eindeutige Ergebnisse erzielen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!