Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggabungkan Rentetan dengan Cekap daripada Berbilang Baris dalam SQL Azure?
Mengoptimumkan Pengagregatan Rentetan dalam SQL Azure
Menggabungkan rentetan daripada berbilang baris ke dalam satu baris dengan cekap adalah tugas manipulasi data yang kerap. Walaupun beberapa kaedah pengagregatan terbukti tidak mencukupi, penyelesaian optimum wujud untuk mengatasi cabaran ini.
Pendekatan Terbaik untuk SQL Azure
Kekurangan fungsi agregat yang ditakrifkan CLR Azure memerlukan strategi alternatif. Pendekatan Transact-SQL berikut menyediakan penyelesaian yang cekap:
<code class="language-sql">WITH Partitioned AS ( SELECT ID, Name, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Name) AS NameNumber, COUNT(*) OVER (PARTITION BY ID) AS NameCount FROM dbo.SourceTable ), Concatenated AS ( SELECT ID, CAST(Name AS nvarchar(max)) AS FullName, Name, NameNumber, NameCount FROM Partitioned WHERE NameNumber = 1 UNION ALL SELECT P.ID, CAST(C.FullName + ', ' + P.Name AS nvarchar(max)), P.Name, P.NameNumber, P.NameCount FROM Partitioned AS P INNER JOIN Concatenated AS C ON P.ID = C.ID AND P.NameNumber = C.NameNumber + 1 ) SELECT ID, FullName FROM Concatenated WHERE NameNumber = NameCount;</code>
Penjelasan Terperinci:
Penyelesaian ini menggunakan proses tiga bahagian:
ID
partition, disusun mengikut abjad dengan Name
, menggunakan ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Name)
.Name
secara berulang berdasarkan nombor baris yang ditetapkan.NameNumber
tertinggi dalam setiap partition, menghasilkan satu rentetan bercantum setiap ID
.Nota: Pertanyaan ini mengandaikan pengumpulan mengikut ID
dan susunan abjad rentetan menaik. Penyesuaian mungkin diperlukan bergantung pada struktur dan keperluan data khusus anda. Pelakon nvarchar(max)
memastikan panjang rentetan yang mencukupi untuk hasil gabungan yang besar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Rentetan dengan Cekap daripada Berbilang Baris dalam SQL Azure?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!