Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengalih Keluar Nilai Pendua daripada Output STRING_AGG dalam Pelayan SQL?

Bagaimanakah Saya Boleh Mengalih Keluar Nilai Pendua daripada Output STRING_AGG dalam Pelayan SQL?

Barbara Streisand
Lepaskan: 2025-01-24 06:57:09
asal
310 orang telah melayarinya

How Can I Remove Duplicate Values from STRING_AGG Output in SQL Server?

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:

  1. 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>
    Salin selepas log masuk
  2. 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>
    Salin selepas log masuk

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>
Salin selepas log masuk

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!

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