2011-01-17 10 views
2

Hier ist meine aktuellen Tabellendaten.HOw CSV Wert erhalten für Szenario folgenden

AccountNumber   Product 
------------------------------ 
00505871    Product1 
00505871    Product2 
00503297    Product3 
00900004    Product4 
00505871    Product3 
00514884    Product3 
00503297    Product2 
00505871    Product1 

Wie kann ich folgendes Ergebnis erzielen.

AccountNumber  ProductString 
------------------------------------------------ 
00505871    Product1,Product2,Product3 
00503297    Product2,Product3 
00900004    Product4 
00514884    Product3 

Danke,

Ashish Chotalia

Antwort

5
select AccountNumber, 
     stuff((select ',' + Product 
        from YourTable t2 
        where t2.AccountNumber = t1.AccountNumber 
        order by Product 
        for xml path('')),1,1,'') as ProductString 
    from YourTable t1 
    group by AccountNumber 
+0

Dies gibt Ergebnis, aber ich möchte für jedes Konto verschiedene Produkt. –

+2

@ ashish.chotalia: Wie Sie in der Antwort, die Sie unabhängig voneinander gepostet haben, gezeigt haben, ist es nur eine Frage des Hinzufügens des Schlüsselworts "distinct" zu der Lösung, die ich Ihnen gegeben habe. –

-2

Below Lösung für mich gearbeitet.

1.

select AccountNumber, 
     stuff((select ',' + Product 
        from YourTable t2 
        where t2.AccountNumber = t1.AccountNumber 
     Group by Product 
        order by Product   
        for xml path('')),1,1,'') as ProductString 
    from YourTable t1 
    group by AccountNumber 

2.

select AccountNumber, 
     stuff((select distinct ',' +Product 
        from YourTable t2 
        where t2.AccountNumber = t1.AccountNumber 
        group by Product 
        for xml path('')),1,1,'') as ProductString 
    from YourTable t1 
    group by AccountNumber 
+1

-1. Du hattest eine perfekt brauchbare Antwort von jemand anderem. Warum nimmst du ihre Antwort, tüftelst sie ein wenig, schreibst dann deine eigene und akzeptierst sie, anstatt ihn zu bitten, seine eigene zu optimieren? –

+0

@Adam, können Sie Zeitstempel dort sehen, Hier sind die zwei Methoden, die ich stieß. Ich dachte, dass es für die Gemeinschaft nützlich sein könnte, das ist der Grund, es als Antwort zu markieren. –

+0

Ja, ich kann sehen, dass du es einen Tag postet, nachdem Joe seine Antwort gepostet hat. Das Hinzufügen des Schlüsselworts "distinct" zu seiner Abfrage hätte funktioniert. Sie sollten Ihre eigene Antwort nur dann posten (und akzeptieren), wenn es keine verwendbaren Antworten gibt. –