簡體   English   中英

將許多行分組並連接到一個

[英]Group and concatenate many rows to one

我想將所有“文本” - “連接”成一行並獲得一行結果。 這甚至可能嗎? 我使用MSSQL Server 2005。

詢問

我相信你正在尋找這樣的東西:

DECLARE @string nvarchar(max)
SET @string = N''

SELECT @string = @string + [Text] + N' ' FROM [YourTable]

SELECT @string

這會將[Text]列的所有值連接成一個變量。 然后,您可以選擇該變量以檢索單行中的所有值。

使用FOR XML PATH:

SELECT [Text]+' ' AS 'text()' FROM _table FOR XML PATH('')

另一種選擇 - 使用字符串連接:

DECLARE @s nvarchar(max)
SELECT @s = ISNULL(@s, '') + t + ' '  FROM _table OPTION (MAXDOP 1)
SELECT @s

請注意,后者不能保證工作,afaik,正式的多行結果集“@s = @s + ...”的行為是未定義的。
這里使用MAXDOP 1提示來防止優化器創建parralel執行計划,因為這肯定會產生不正確的結果。

就像是:

DECLARE @result varchar(max)

SELECT @result = COALESCE(@result + ' ','') +[Text] FROM [Table]
SELECT @result

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM