Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mendapatkan Hasil Berbeza Menggunakan STRING_AGG dalam SQL Server 2017?
Menjana Nilai Unik dengan Fungsi STRING_AGG SQL Server 2017
Fungsi STRING_AGG
dalam SQL Server 2017 tidak menyokong nilai yang berbeza secara langsung. Walau bagaimanapun, mencapai hasil agregat unik adalah mungkin menggunakan pendekatan dua langkah. Kaedah ini mengelakkan sintaks STRING_AGG(DISTINCT column, ',')
yang tidak sah.
Penyelesaian itu melibatkan Common Table Expression (CTE) untuk pra-memproses data. CTE mengumpulkan data untuk menghapuskan pendua sebelum pengagregatan akhir.
Contoh di bawah menunjukkan teknik ini. Sitings
CTE awal menyediakan data sampel. CTE_Animals
CTE kemudian dikumpulkan mengikut State
, City
dan Siting
untuk mengalih keluar masukan berlebihan. Pertanyaan utama kemudiannya menggunakan STRING_AGG
untuk menggabungkan nilai Siting
unik untuk setiap gabungan State
dan City
.
<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>
Pendekatan ini menjamin bahawa lajur Animals
terakhir mengandungi hanya penampakan haiwan yang unik untuk setiap lokasi, manakala lajur # Of Sitings
menggambarkan kiraan yang berbeza. Klausa ORDER BY
memastikan susunan output yang konsisten dan boleh diramal.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Hasil Berbeza Menggunakan STRING_AGG dalam SQL Server 2017?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!