![](/img/trans.png)
[英]T-SQL: Select foreign key from one table and find corresponding rows in another
[英]Concatenating multiple rows fields into one column in T-SQL
我正在編寫一個SQL查詢,其中需要對表執行子選擇,該表通常將返回多行。 我需要能夠將所有行中某個字段的結果連接到一個字段中以進行輸出。 這有可能,怎么樣?
例如,如果SQL查詢返回
id | field
1 | test1
2 | test2
3 | test3
我需要輸出的字段是“ test1 test2 test3”。 謝謝
這是for xml
技巧:
SELECT field + ' ' as [text()]
FROM YourTable
FOR XML PATH ('')
打印:
test1 test2 test3
它通常與outer apply
一起使用,以對每行執行一次。
declare @sample table(id int, field varchar(20))
insert into @sample values(1,'test1')
insert into @sample values(2,'test2')
insert into @sample values(3,'test3')
declare @result varchar(max) set @result = ''
select @result = @result + ' '+field from @sample
select @result
SQLCLR自定義聚合器將是替代的(更好的閱讀方式)解決方案
嘗試這個:
SELECT RTRIM(field)
FROM (
SELECT field + ' ' field
FROM <YOUR_TABLE>
FOR XML PATH('')
) a
可以用光標做。
declare @field nvarchar(max)
declare @concat nvarchar(max)
set @concat = ''
declare @cursor cursor
set @cursor = cursor for select field from table
open @cursor
fetch next from @cursor into @field
while @@fetch_status = 0
begin
set @concat = concat(@concat,@field)
fetch next from @cursor into @field
end
您的工作是在連接的字符串之間添加空格:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.