Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mendapatkan Hasil Berbeza Menggunakan STRING_AGG dalam SQL Server 2017?

Bagaimanakah Saya Boleh Mendapatkan Hasil Berbeza Menggunakan STRING_AGG dalam SQL Server 2017?

Susan Sarandon
Lepaskan: 2025-01-24 06:46:10
asal
802 orang telah melayarinya

How Can I Get Distinct Results Using STRING_AGG in 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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan