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
Lepaskan: 2024-12-26 11:13:16
asal
857 orang telah melayarinya

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

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

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!

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