2017-11-29 10 views
2

私のレポートで要件を実行することに固執しています。レコードを1行に連結する

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 

結果が設定

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.サプライヤ名は「ABC」とオーダー型を有するオーダーで報告しなければならないと他の人のためのブランクでなければなりません。

2. name、item_segment、due_date、order-typeなどの同じ組み合わせの2つのレコードが異なるサプライヤ名を持つ場合、それらの間に '、'を付けて1つの行に結合する必要があります。

あなたが case表現

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; 

結果の助けを借りてstuff()機能を使用することができます

答えて

1

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

おかげでたくさん!それは私のために働い –

0

があなたのテーブル名がABCであると仮定。

はこれを試してみてください:

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

はありがとうmuch..Itが私を助けて:)それは助け –

+0

うれしいです。役に立つ場合は、「回答としてマークする」と「投票する」ことができます。このようにして、他のユーザーにも恩恵がもたらされます。 [回答としてマークする方法](https://stackoverflow.com/help/someone-answers) – Sunil

関連する問題