![](/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.