Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melakukan Pengagregatan Rentetan Berkumpulan dalam Pelayan SQL Tanpa LISTAGG?

Bagaimana untuk Melakukan Pengagregatan Rentetan Berkumpulan dalam Pelayan SQL Tanpa LISTAGG?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-29 01:48:10811semak imbas

How to Perform Grouped String Aggregation in SQL Server Without LISTAGG?

Agregasi Rentetan Berkumpulan dalam SQL Server

Apabila bekerja dengan SQL Server, satu tugas biasa ialah mengagregatkan nilai rentetan daripada berbilang baris menjadi satu , rentetan dipisahkan koma. Sebagai contoh, memandangkan jadual dengan pengeluar dan model kereta, anda mungkin mahu membuat set data yang mengumpulkan model kereta mengikut pembuatan kereta.

Alternatif kepada LISTAGG untuk SQL Server

Dalam Oracle, tugasan ini biasanya dilakukan menggunakan fungsi LISTAGG. Walau bagaimanapun, SQL Server tidak mempunyai LISTAGG terbina dalam bersamaan. Sebaliknya, anda boleh menggunakan gabungan fungsi STUFF dan FOR XML PATH untuk mencapai hasil yang sama.

Pertanyaan berikut menunjukkan cara untuk mencapai pengagregatan rentetan berkumpulan dalam SQL Server menggunakan STUFF dan FOR XML PATH:

SELECT
  make.CarMakeID,
  make.CarMake,
  (
    SELECT
      STUFF(
        (
          SELECT
            ',' + model.CarModel
          FROM CarModels
          WHERE
            model.CarMakeID = make.CarMakeID
          FOR XML PATH('')
        ),
        1,
        1,
        ''
      ) AS CarModels
  )
FROM CarMakes AS make;

Dalam pertanyaan ini, subkueri menggunakan fungsi FOR XML PATH untuk menggabungkan model kereta menjadi satu rentetan XML, dipisahkan oleh koma. Fungsi STUFF kemudian mengeluarkan koma di hadapan dan mengembalikan rentetan bercantum sebagai lajur CarModels.

Berikut ialah output pertanyaan:

| CarMakeID | CarMake | CarModels |
|----------|---------|-----------|
| 1         | SuperCars | Zoom, Wow, Awesome |
| 2         | MehCars | Mediocrity, YoureSettling |

Teknik ini menyediakan cara yang mudah dan cekap untuk mencapai pengagregatan rentetan berkumpulan dalam SQL Server, walaupun dalam situasi di mana penggabungan rentetan adalah rumit atau termasuk aksara khas.

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Pengagregatan Rentetan Berkumpulan dalam Pelayan SQL Tanpa LISTAGG?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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