Sql 基于另一列中的顺序逻辑从多行串联列值
在SQLServer2008上,我有以下结果Sql 基于另一列中的顺序逻辑从多行串联列值,sql,sql-server,Sql,Sql Server,在SQLServer2008上,我有以下结果 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
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,请尝试下面的查询。它已根据您的问题进行了更新
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 FIDLE链接:
解释:查询在外部查询中使用
FOR XML PATH
,使用名称在组合字符串中的位置以正确顺序获取每个id行的串联值。可能重复的问题不再重复,因为不会添加排序逻辑。