SQL Server分組值拼接:無需GROUP_CONCAT
資料庫管理中,經常需要合併組內不同行的值。例如,在一個表中,單一ID關聯多個值:
Id | Value |
---|---|
1 | 'A' |
1 | 'B' |
2 | 'C' |
目標是將資料轉換為每個ID及其關聯值拼接後的字串:
Id | Value |
---|---|
1 | 'AB' |
2 | 'C' |
在SQL Server中實現這一點可能看起來很困難,因為它沒有MySQL的GROUP_CONCAT函數。但是,利用使用者自訂聚合函數(UDFs),SQL Server可以輕鬆解決這個問題。
為了建立一個有效的字串拼接UDF,讓我們分析一下重複問題「如何在SQL Server中使用GROUP BY拼接字串?」中提供的解決方案。核心部分是一個聚合函數,它接受兩個字串參數,將它們拼接,並傳回結果。透過將此操作封裝在UDF中,我們可以在查詢中使用它。
以下是建立UDF的程式碼片段:
<code class="language-sql">CREATE FUNCTION [dbo].[StringConcat](@Val1 VARCHAR(MAX), @Val2 VARCHAR(MAX)) RETURNS VARCHAR(MAX) AS BEGIN RETURN COALESCE(@Val1 + @Val2, '') END;</code>
現在,我們可以在簡單的查詢中使用此UDF:
<code class="language-sql">SELECT Id, StringConcat(Value, '') AS Value FROM YourTable GROUP BY Id;</code>
最終的查詢計畫顯示了這種方法的效率。借助使用者自訂聚合函數,我們可以輕鬆地拼接分組行的值,從而有效地解決資料庫難題。
以上是如何在沒有 GROUP_CONCAT 的情況下連接 SQL Server 中的分組值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!