Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 基于另一列中的顺序逻辑从多行串联列值_Sql_Sql Server - Fatal编程技术网

Sql 基于另一列中的顺序逻辑从多行串联列值

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

在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   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行的串联值。

可能重复的问题不再重复,因为不会添加排序逻辑。