我正在尝试将多个记录中的字段组合成SQL Server或T-SQL中的单个字符串。
例如 ,我有:
ID myString 1 This 2 is 3 a 4 test!
... 我需要 :
This is a test!
我可以使用LAG组合两个记录(见下文),我怀疑解决方案中有WHILE(可能是this RedGate post的变体) ,但我不确定如何继续。
create table #temp (id int, myString varchar(max));
insert into #temp values (1,'This');
insert into #temp values (2,'is');
insert into #temp values (3,'a');
insert into #temp values (4,'test!');
select
myString,
LAG(myString) OVER (ORDER BY id) + ' ' + myString as [myTwoFields]
from #temp
...返回:
ID myString myTwoFields
1 This
2 is This is
3 a is a
4 test! a test!
不幸的是,我无法在此服务器上创建UDF 。因此,SE Data Explorer是测试的代表性地点:
请参阅SEDE上的this query,或者 click here to fork it 进行测试。
思考?谢谢!的
答案 0 :(得分:3)
示例强>
Select NewStr = Stuff((Select ' ' +MyString From #temp Order by ID For XML Path ('')),1,1,'')
<强>返回强>
NewStr
This is a test!
另一个选项
Declare @S varchar(max) = ''
Select @S = ltrim(@S+' '+MyString)
From #Temp
Order by ID
Select @S
<强>返回强>
This is a test!