最佳化 SQL Azure 中的字串聚合
將多行中的字串有效地組合成一行是一項頻繁的資料操作任務。 雖然某些聚合方法被證明是不夠的,但存在克服這項挑戰的最佳解決方案。
SQL Azure 的最佳方法
SQL Azure 缺乏 CLR 定義的聚合函數,因此需要替代策略。 以下 Transact-SQL 方法提供了有效的解決方案:
<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>
詳細說明:
此解決方案採用三部分流程:
ID
分區中的每一行分配一個唯一的編號,使用 Name
.ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Name)
按 Name
值。 NameNumber
最高的行,為每個 ID
產生一個串聯字串。 注意:此查詢假設按 ID
分組並按字串字母升序排列。根據您的特定資料結構和要求,可能需要進行調整。 nvarchar(max)
強制轉換可確保為大型串聯結果提供足夠的字串長度。
以上是如何在 SQL Azure 中高效率地連接多行字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!