首頁 >資料庫 >mysql教程 >如何在 SQL Server 2005 中連線分組值?

如何在 SQL Server 2005 中連線分組值?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-09 12:26:441035瀏覽

How to Concatenate Grouped Values in SQL Server 2005?

在SQL Server中合併分組值

假設有一個表格包含與唯一識別碼關聯的多個值,例如:

<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_AGGSTRING_SPLIT 的功能。

以上是如何在 SQL Server 2005 中連線分組值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn