我必须将来自两个查询的值组合并以逗号分隔显示,并且需要将其区分开来。我尝试使用join / union all或在每个值中使用distinct但是如果值很常见,我仍然可以获得重复,有人可以帮助解决这个问题。以下是我的查询和输出
SELECT DISTINCT
(SELECT DISTINCT
ISNULL((SELECT TOP 1 PV.serialnumber
FROM ConsumerItemsTable PV
WHERE PV.ItemID = 61) + ',' , '') +
ISNULL(STUFF((SELECT distinct ',' + itemid
FROM CustomerItems b
WHERE Name = 'WillamRobbe'
FOR XML PATH('')), 1, 1, '') + ',' , ''))
第一个查询的输出是0991345
第二个查询的输出是0033874,0991345,8877425
答案 0 :(得分:1)
以下是使用union
并使用派生表移动select
查询中的外部for xml
的一种方法:
select stuff((
select ',' + itemid
from (
select itemid
from CustomerItems b
where Name = 'WillamRobbe'
union
select top 1 serialnumber
from ConsumerItemsTable pv
where pv.Itemid = 61
) s
for xml path('')
), 1, 1, '')
rextester演示:http://rextester.com/UXIK17206
返回:0033874,0991345,8877425