我有一个记录集,我希望将所有表变量值合并到此单个记录集中,从而产生多个记录集。
例如:我的表A包含列c1,c2,c3
declare @fnum table (fnum varchar(10))
insert into @fnum
select xc1 from x where xc='some condition' ---(results in multiple records)
select c1, c2, c3 , (select fnum from @fnum ) from A where c3='some condition'
表A返回c3条件的单个记录。但是当我执行最后一次选择时,它应该为每个表变量值显示多个记录集。我不想使用任何循环。我该如何处理?
答案 0 :(得分:0)
请尝试以下操作:
select c1, c2, c3 , (STUFF((SELECT ', ' + fnum FROM @fnum
FOR XML PATH(''), TYPE, ROOT).value('root[1]','nvarchar(max)'), 1, 2, '')) from A where c3='some condition'
您可以在查询中放置任何分隔符而不是“,”。但不要忘记调整STUFF功能的长度参数。这里','由2个字符组成,所以我为STUFF函数设置了长度= 2。