Mengendalikan Nilai Pendua dalam Fungsi STRING_AGG SQL Server
Fungsi STRING_AGG SQL Server, yang diperkenalkan dalam SQL Server 2017, menggabungkan nilai lajur ke dalam satu rentetan. Walau bagaimanapun, ia tidak secara semula jadi mengalih keluar pendua. Artikel ini memperincikan pendekatan dua langkah untuk mencapai nilai yang berbeza dalam rentetan agregat.
Penyelesaian Dua Langkah
Kuncinya ialah melakukan operasi yang berbeza sebelum menggunakan STRING_AGG. Ini melibatkan proses pengelompokan dua peringkat:
Pengumpulan Awal untuk Nilai Berbeza: Mula-mula, kumpulkan data mengikut lajur yang anda mahu unik, bersama-sama dengan mana-mana lajur lain yang diperlukan untuk hasil akhir anda. Ini mengalih keluar baris pendua pada sumber.
<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>
Pengumpulan dan Pengagregatan Akhir: Seterusnya, kumpulkan hasil daripada langkah pertama mengikut lajur yang anda inginkan dan gunakan STRING_AGG untuk menggabungkan nilai yang berbeza.
<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>
Nota Penting pada Panjang Rentetan:
Jika rentetan gabungan anda mungkin melebihi had 8000 aksara VARCHAR, hantar nilai ke VARCHAR(MAX)
sebelum menggunakan STRING_AGG
:
<code class="language-sql">STRING_AGG(CAST(Siting AS VARCHAR(MAX)), ',') AS Animals</code>
Kaedah ini berkesan menghasilkan STRING_AGG
hasil yang mengandungi hanya nilai unik.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengalih Keluar Nilai Pendua daripada Output STRING_AGG dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!