假設有一個表格包含與唯一識別碼關聯的多個值,例如:
<code>+------------+ | Id | Value | +------------+ | 1 | 'A' | |------------| | 1 | 'B' | |------------| | 2 | 'C' | +------------+</code>
為了達到將具有相同Id的行合併到具有組合值的一行中的預期結果:
<code>+------------+ | Id | Value | +------------+ | 1 | 'AB' | |------------| | 2 | 'C' | +------------+</code>
在 SQL Server 2005 中,可以使用使用者定義的聚合函數。此函數在其範例實作中提供,可以無縫地執行此串聯任務。
<code class="language-sql">-- 创建用户定义的聚合函数 CREATE FUNCTION [dbo].[ConcatValues](@array VARCHAR(MAX)) RETURNS VARCHAR(MAX) AS BEGIN DECLARE @result VARCHAR(MAX) = ''; IF @array IS NOT NULL BEGIN SELECT @result = @result + value FROM STRING_SPLIT(@array, ','); END RETURN @result; END; -- 在查询中使用用户定义的聚合函数 SELECT Id, [dbo].[ConcatValues](STRING_AGG(Value, ',')) AS Value FROM TableName GROUP BY Id;</code>
透過此解決方案,您可以像使用任何其他標準聚合函數一樣利用使用者定義的聚合函數,從而可以將其無縫地合併到您的查詢中。 請注意,STRING_SPLIT
函數在 SQL Server 2016 及更高版本中可用。對於 SQL Server 2005,您需要使用替代方法來拆分字串,例如自訂函數或遊標。 上面的程式碼已更新為使用 STRING_AGG
函數(SQL Server 2017 及更高版本),提供更清晰的解決方案。 對於 SQL Server 2005,您需要一個更複雜的自訂解決方案來模擬 STRING_AGG
和 STRING_SPLIT
的功能。
以上是如何在 SQL Server 2005 中連線分組值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!