我有一个记录集,我想将所有表变量值合并到这个记录集中,从而生成多个记录集。
例如:我有表 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 条件的单个记录。但是当我进行最后一次选择时,它应该为每个表变量值显示多个记录集。我不想使用任何循环.我该如何处理它?
尝试以下操作:
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 函数设置 length = 2。