Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mencapai Pengagregatan Rentetan dalam Pelayan SQL Tanpa Fungsi 'AGG'?

Bagaimanakah Saya Boleh Mencapai Pengagregatan Rentetan dalam Pelayan SQL Tanpa Fungsi 'AGG'?

Susan Sarandon
Susan Sarandonasal
2024-12-26 11:13:16849semak imbas

How Can I Achieve String Aggregation in SQL Server Without an 'AGG' Function?

Agregasi Rentetan Berkumpulan dalam Pelayan SQL: Gantikan untuk 'AGG'

SQL Server tidak mempunyai fungsi pengagregatan rentetan terbina dalam yang serupa dengan 'AGG ' dalam pertanyaan yang anda berikan. Walau bagaimanapun, terdapat pendekatan alternatif untuk menggabungkan nilai baris ke dalam hasil terkumpul.

Satu penyelesaian memanfaatkan fungsi FOR XML dan STUFF. Fungsi FOR XML menukar hasil pertanyaan dalaman kepada XML, yang kemudiannya boleh diproses dengan fungsi STUFF untuk mengalih keluar tag XML dan menggabungkan rentetan. Berikut ialah contoh:

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

Pendekatan lain menggunakan fungsi COALESCE dan ROW_NUMBER. Fungsi COALESCE menggabungkan nilai bukan nol, manakala fungsi ROW_NUMBER memperuntukkan nombor baris unik dalam setiap kumpulan. Pertanyaan berikut menggunakan pendekatan ini:

SELECT CarMakeID, CarMake,
    COALESCE(
        (
            SELECT CarModel
            FROM CarModels model
            WHERE model.CarMakeID = make.CarMakeID
            AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) = 1
        ),
        '',
        COALESCE(
            (
                SELECT ', ' + CarModel
                FROM CarModels model
                WHERE model.CarMakeID = make.CarMakeID
                AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) > 1
            )
        )
    ) as CarModels
FROM CarMakes make

Pendekatan ini menyediakan kaedah alternatif untuk mengumpulkan dan menggabungkan rentetan dalam SQL Server, membolehkan pengagregatan data yang cekap dan boleh dibaca.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Pengagregatan Rentetan dalam Pelayan SQL Tanpa Fungsi 'AGG'?. 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