2017-10-03 6 views
1

Je dois combiner les valeurs de deux requêtes et afficher en tant que virgules séparées et doivent être distinctes. J'ai essayé d'utiliser join/union tout ou utiliser distinct dans chaque valeur, mais je reçois toujours des doublons si les valeurs sont communes peut-on aider s'il vous plaît avec ceci. Ci-dessous ma requête et sortiesupprimer le doublon du résultat en sql

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, '') + ',' , '')) 

sortie de la première requête est 0991345

sortie de deuxième requête est 0033874,0991345,8877425

  • sortie prévue est 0033874,0991345,8877425
  • La sortie actuelle est 0991345,0033874,0991345,8877425

Répondre

1

Voici une façon d'utiliser union et en déplaçant la select externe à l'intérieur de la requête for xml en utilisant une table dérivée:

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 démonstration: http://rextester.com/UXIK17206

retours:

0033874,0991345,8877425