在SQL Server 2008上,我有以下结果
id combo name value
-----------------------------------------
1 var1 + var2 var1 123
1 var1 + var2 var2 456
2 var1 + var4 + var2 var1 789
2 var1 + var4 + var2 var2 432
2 var1 + var4 + var2 var4 600
3 var1 + var2 + var3 var1 654
3 var1 + var2 + var3 var2 987
3 var1 + var2 + var3 var3 654
我需要对列表进行处理,以便代替组合我将获得该组合的值。
id values
-----------------------------------------
1 123.456
2 789.600.432
3 654.987.654
修改:请检查组合列。这是关键值应如何合并的关键列。所以第二项是789.600.432而不是789.432.600
答案 0 :(得分:3)
请尝试以下查询。它已根据您的问题进行了更新。
select distinct id,
stuff(
(
Select
'.'+t1.[value]
from tbl t1
where t1.ID=t2.ID
order by CHARINDEX(t1.name,t1.combo)
for xml path('')
),1,1,'')
as [values]
from tbl t2
演示 sql小提琴链接:http://sqlfiddle.com/#!3/ba4a1/12
说明:查询在外部查询中使用FOR XML PATH
,使用组合字符串中的name位置,以正确的顺序获取每个id行的连接值。