2017-11-29 3 views
2

Ich bin mit der Durchführung einer Anforderung in meinem Bericht stecken.Verketten der Datensätze in 1 Zeile

Name Item_segment   Due_Date Order_type Total_Qty Supplier name 

A   xx   11/18/2017  ABC   10   ababbcc 

A   xx   11/18/2017  ABC   10   deffgg 

B   xx   11/26/2017  ABC   40   xxyyzzz 

C   xx   11/18/2017  ABC   10   deffgg 

C   xx   11/30/2017  ABC   10   deffgg 

C   xx   11/30/2017  DEF   10   deffgg 

C   xx   11/30/2017  PQR   10   deffgg 

Ergebnis gesetzt

Name Item_segment   Due_Date Order_type Total_Qty  Supplier name 

A   xx   11/18/2017  ABC   10  ababbcc,deffgg 

B   xx   11/26/2017  ABC   40   xxyyzzz 

C   xx   11/18/2017  ABC   10   deffgg 

C   xx   11/30/2017  ABC   10   deffgg 

C   xx   11/30/2017  DEF   10   ----- 

C   xx   11/30/2017  PQR   10   ----- 

1.Die Lieferanten Namen sollten mit den Aufträgen, die Auftragsart als ‚ABC‘ gemeldet werden und sollte für andere leer sein.

2.Wenn 2 Datensätze unterschiedliche Lieferantennamen für die gleiche Kombination aus Name, Artikel_Segment, Fälligkeitsdatum, Auftragstyp usw. haben, dann sollte sie in 1 Zeile mit ',' zwischen ihnen kombiniert werden.

Antwort

1

könnten Sie von stuff() Funktion verwenden, um mit Hilfe von case Ausdruck

SELECT Name, Item_segment, Due_Date, Order_type, Total_Qty, 
     [Supplier name] = CASE(Order_type) WHEN 'ABC' 
          THEN STUFF((
              SELECT DISTINCT ','+[Supplier name] FROM <table> 
              WHERE Name = t.Name FOR XML PATH('') 
             ), 1, 1, '') 
          ELSE ' ' END 
FROM <table> t 
GROUP BY Name, Item_segment, Due_Date, Order_type, Total_Qty; 

Ergebnis:

Name Item_segment Due_Date Order_type Total_Qty Supplier name 
A  xx    11/18/2017 ABC   10   ababbcc,deffgg 
B  xx    11/26/2017 ABC   40   xxyyzzz 
C  xx    11/18/2017 ABC   10   deffgg 
C  xx    11/30/2017 ABC   10   deffgg 
C  xx    11/30/2017 DEF   10 
C  xx    11/30/2017 PQR   10 
+0

Vielen Dank !! Es war für mich –

0

Ihre Tabellennamen ABC annimmt.

Try this:

Select Main.Name, Main.Item_segment,Main.Due_Date,Main.Order_type,Main.Total_Qty, 
     Left(Main.Supplier_name,Len(Main.Supplier_name)-1) As "Supplier_name" 
From 
    (
     Select distinct ST2.Name, ST2.Item_segment, ST2.Due_Date, ST2.Order_type, ST2.Total_Qty, 
      (
       Select ST1.Supplier_name + ',' AS [text()] 
       From abc ST1 
       Where ST1.Name = ST2.Name 
        and ST1.Item_segment = ST2.item_Segment 
        and ST1.Due_Date = ST2.Due_Date 
        and ST1.Order_type = ST2.Order_Type 
       ORDER BY ST1.Name 
       For XML PATH ('') 
      ) as Supplier_name 
     From abc ST2 
    ) [Main] 
+0

Danke so much..It mir geholfen :) –

+0

Glad es half. Sie können "als Antwort markieren" und "nach oben abstimmen", falls hilfreich. Auf diese Weise werden auch andere Benutzer davon profitieren. [Wie als Antwort markieren?] (Https://stackoverflow.com/help/someone-answers) – Sunil

Verwandte Themen