以下は3つの表です
QuotationMaster
QuoteID QuoteNo CustomerName
-----------------------------
1 Q1 Name1
2 Q2 Name2
3 Q3 Name3
4 Q4 Name4
5 Q5 Name5
QuoteItemDetails:1つの見積もりに多くのアイテムを含めることができます
QuoteItemID QuoteID ItemCode ItemID
---------------------------------------------
1 1 100 1
1 1 200 2
2 2 200 2
QuoteBatchDetails:QuoteItem
多くのバッチを持つことができQuoteID
、ItemID
共通の列です。BatchNo
varcharです
QuotebatchID QuoteID BatchNo ItemID
---------------------------------------------
1 1 A 1
2 1 B 1
3 1 C 2
4 2 E 2
5 2 F 2
結果が欲しい
QuoteID QuoteNo CustName ItemCode BatchNo
-------------------------------------------------
1 Q1 Name1 100 A,B
1 Q1 Name1 200 C
2 Q2 Name2 200 E,F
INT型のパラメータとしてQuoteIDを取り、上記のような結果を得るプロシージャを作成したいと思います。
私が直面している唯一の問題は、ItemID、さらにはQuoteIDに依存するBatchNoを連結することです。
以下のクエリを使用して、特定のIDのBatchNoを連結することはできますが、これをメインプロシージャに追加する方法がわかりません。そうすると、サブクエリが複数の値を返すようにエラーがポップアップします。複数のアイテムが存在する可能性があります。
select
ID.QuoteID,ID.ItemID,
stuff((select ', ' + BatchNo
from SD_QuoteBatchDetails BD where ID.ItemID=BD.ItemID and ID.QuoteID=BD.QuoteID
for xml path('')),
1,2,'') [Values]
from SD_QuoteItemDetails QID,SD_QuoteBatchDetails ID where ID.QuoteID=QID.QuoteID
group by ID.ItemID,ID.QuoteID
誰でも同じもののクエリを提供できますか?