SQL Server 函數:將多個 SQL 行組合成單一分隔欄位
在 SQL Server 中有效地將子查詢中的多行合併到單一分隔欄位中需要一種強大的方法。 本文介紹了兩種有效的技術,適用於不同的 SQL Server 版本。
對於 XML 路徑(SQL Server 2005 及更高版本):
此方法與 SQL Server 2005 及後續版本相容,利用 FOR XML PATH
指令進行字串連線。 這是一個例子:
<code class="language-sql">SELECT [VehicleID], [Name], (STUFF((SELECT CAST(', ' + [City] AS VARCHAR(MAX)) FROM [Location] WHERE (VehicleID = Vehicle.VehicleID) FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '')) AS Locations FROM [Vehicle]</code>
此查詢使用 FOR XML PATH
為每個 VehicleID
建立一個以逗號分隔的城市值字串。 STUFF
函數刪除前導逗號。
STRING_AGG(SQL Server 2017 及更高版本):
對於 SQL Server 2017 及更高版本,STRING_AGG
函數提供了更清晰、更有效率的解決方案:
<code class="language-sql">SELECT [VehicleID], [Name], (SELECT STRING_AGG([City], ', ') FROM [Location] WHERE VehicleID = V.VehicleID) AS Locations FROM [Vehicle] V</code>
STRING_AGG
直接將 City
值與指定的分隔符號(本例中為逗號和空格)連接起來。 這種方法通常因其提高的可讀性和性能而受到青睞。
這兩種方法都可以有效地將多行資料聚合到單一分隔欄位中,從而簡化 SQL Server 中的資料操作。 選擇最適合您的 SQL Server 版本的方法以獲得最佳結果。
以上是如何將多個 SQL 行合併到單一分隔欄位中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!