Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggunakan STRING_AGG Pelayan SQL untuk Mendapatkan Nilai Berbeza dan Rentetan Bercantumnya?

Bagaimanakah Saya Boleh Menggunakan STRING_AGG Pelayan SQL untuk Mendapatkan Nilai Berbeza dan Rentetan Bercantumnya?

DDD
Lepaskan: 2025-01-24 06:51:13
asal
688 orang telah melayarinya

How Can I Use SQL Server's STRING_AGG to Get Distinct Values and Their Concatenated String?

Menggunakan STRING_AGG SQL Server untuk Nilai dan Penggabungan Yang Berbeza

Fungsi STRING_AGG SQL Server menggabungkan nilai daripada berbilang baris dengan cekap. Walau bagaimanapun, untuk mendapatkan nilai yang berbeza secara langsung dan rentetan gabungannya memerlukan pendekatan yang sedikit lebih kompleks. Cabarannya terletak pada menggabungkan fungsi COUNT(DISTINCT ...) dengan pengagregatan rentetan.

Penyelesaian biasa melibatkan proses pengelompokan dua langkah. Klausa GROUP BY pertama mengenal pasti gabungan unik lajur yang berkaitan (cth., Negeri, Bandar, Penempatan), menghapuskan pendua. GROUP BY kedua kemudian mengagregatkan gabungan unik ini, menggunakan STRING_AGG untuk menggabungkan nilai yang berbeza. Kaedah ini menyediakan kedua-dua kiraan nilai yang berbeza dan rentetan bercantum.

Berikut ialah contoh yang menunjukkan teknik ini:

<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')
    ) AS 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

Pertanyaan ini menghasilkan set hasil yang menunjukkan penampakan haiwan yang berbeza setiap bandar dan negeri:

<code>+---------+-----------+--------------+----------+
|  State  |   City    | # Of Sitings | Animals  |
+---------+-----------+--------------+----------+
| Arizona | Flagstaff |            1 | dog      |
| Arizona | Phoenix   |            2 | bird,dog |
| Florida | Orlando   |            2 | bird,dog |
+---------+-----------+--------------+----------+</code>
Salin selepas log masuk

Mengendalikan Rentetan Panjang:

Jika rentetan peletakan yang digabungkan melebihi had 8000 aksara varchar, secara eksplisit menghantar lajur Siting ke varchar(max) sebelum menggunakan STRING_AGG adalah perlu untuk mengelakkan pemotongan:

<code class="language-sql">STRING_AGG(CAST(Siting AS VARCHAR(MAX)), ',') AS Animals</code>
Salin selepas log masuk

Ini memastikan rentetan yang digabungkan dapat menampung hasil yang lebih panjang.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan STRING_AGG Pelayan SQL untuk Mendapatkan Nilai Berbeza dan Rentetan Bercantumnya?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan