2017-11-22 5 views
0

ich die folgenden Tabellen:SQLSERVER mehrere Zeilen Kombinieren in 1 Zeile

Product_Order 
Order_Num Order_Date 
1   10/12/2017 
2   10/31/2017 
3   11/01/2017 

Product_Order_Dtl 
Order_Num Product_Desc 
1   Toy_01 
1   Toy_02 
1   Toy_03 
2   Toy_01 
2   Toy_05 
3   Toy_01 

Ich versuche, die Product Order Tabelle zu aktualisieren, alle mit dieser Reihenfolge in eine neue Spalte zugehörige Produkte zur Liste Product_List genannt. Genau wie das Folgende:

Product_Order 
Order_Num Order_Date Product_List 
1   10/12/2017 Toy_01, Toy_02, Toy_03 
2   10/31/2017 Toy_01, Toy_05 
3   11/01/2017 Toy_01 

Gibt es eine Möglichkeit, das mit einer Update-Anweisung zu tun? Ich verwende eine Version von SQL 2012.

+2

Warum wollen Sie das tun? –

+0

Mögliches Duplikat von [Wie man eine Abfrage mit der Gruppe \ _concat in SQL Server macht] (https://stackoverflow.com/questions/17591490/how-to-make-a-query-with-group-concat-in-sql -server) –

+0

Bitte bedenken Sie die @ WEI_DBA Frage, bevor Sie eine der angebotenen Antworten verwenden! Wenn Sie nicht einen zwingenden Grund haben, ist das mit ziemlicher Sicherheit eine schlechte Idee. –

Antwort

2

Sie unter Abfrage verwenden können

SELECT A.Order_Num, A.Order_Date, STUFF((SELECT ',' + Product_Desc 
      FROM Product_Order_Dtl C 
where C.Order_Num=A.Order_Num    
      FOR XML PATH('')), 1, 1, '') AS Product_List 
from Product_Order A 
inner join Product_Order_Dtl B on A.Order_Num =B.Order_Num 
group by A.Order_Num,A.Order_Date 
0

Dies wird es tun:

SELECT 
    PO.Order_Num 
    , PO.Order_Date 
    , 
     STUFF 
     (
      (
       SELECT ', ' + POD.Product_Desc 
       FROM Product_Order_Dtl POD 
       WHERE POD.Order_Num = PO.Order_Num 
       ORDER BY POD.Product_Desc 
       FOR XML PATH ('') 
      ), 1, 2, '' 
     ) Product_List 
FROM Product_Order PO 
Verwandte Themen