从sql中删除结果中的重复项

时间:2017-10-03 18:33:06

标签: sql-server duplicates comma distinct-values

我必须将来自两个查询的值组合并以逗号分隔显示,并且需要将其区分开来。我尝试使用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

  • 预期产量为0033874,0991345,8877425
  • 当前输出为0991345,0033874,0991345,8877425

1 个答案:

答案 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