Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengagregatkan Rentetan dalam Pelayan SQL Seperti LISTAGG Oracle?

Bagaimanakah Saya Boleh Mengagregatkan Rentetan dalam Pelayan SQL Seperti LISTAGG Oracle?

Patricia Arquette
Patricia Arquetteasal
2025-01-22 13:01:15176semak imbas

How Can I Aggregate Strings in SQL Server Like Oracle's LISTAGG?

Senarai Pengagregatan dalam Pelayan SQL

SQL Server menyediakan satu set fungsi yang berkuasa untuk pengagregatan data, termasuk keupayaan untuk menggabungkan nilai daripada berbilang baris ke dalam satu rentetan yang dipisahkan koma. Menguasai kaedah pengagregatan ini adalah penting untuk pelbagai tugas pengagregatan dan pembentangan data.

Untuk mencapai fungsi yang sama seperti fungsi LISTAGG Oracle dalam SQL Server, anda boleh menggunakan fungsi STRING_AGG. Diperkenalkan dalam SQL Server 2017, fungsi ini membenarkan rentetan penggabungan dalam kumpulan.

Contoh

Pertimbangkan set data berikut:

字段 A 字段 B
1 A
1 B
2 A

Pertanyaan:

<code class="language-sql">SELECT FieldA,
       STRING_AGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldB) AS FieldBs
FROM TableName
GROUP BY FieldA
ORDER BY FieldA;</code>

Keputusan:

字段 A FieldBs
1 A, B
2 A

Fungsi STRING_AGG dengan klausa WITHIN GROUP memastikan bahawa nilai digabungkan dalam setiap kumpulan yang dikumpulkan mengikut FieldA. Klausa ORDER BY dalam agregat menentukan susunan nilai yang perlu disenaraikan.

Untuk versi SQL Server sebelum 2017, anda boleh menggunakan gabungan CTE (ungkapan jadual biasa) dan fungsi STUFF untuk mencapai hasil yang sama. Walau bagaimanapun, untuk kesederhanaan dan keserasian dengan versi yang lebih baharu, fungsi STRING_AGG ialah penyelesaian yang disyorkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengagregatkan Rentetan dalam Pelayan SQL Seperti LISTAGG Oracle?. 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