下面是3张表
报价大师
QuoteID QuoteNo CustomerName
-----------------------------
1 Q1 Name1
2 Q2 Name2
3 Q3 Name3
4 Q4 Name4
5 Q5 Name5
QuoteItemDetails : 一个报价可以有多个项目
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
我想创建一个以 QuoteID 作为 INT 类型参数的过程并获得如上所示的结果。
我面临的唯一问题是连接 BatchNo,它取决于 ItemID 并进一步取决于 QuoteID。
使用下面的查询,我可以为特定 ID 连接 BatchNo,但我不确定如何将其添加到主过程中,当我这样做时,会弹出错误,就像子查询返回多个值一样。我理解,因为对于每个报价可以有超过 1 个项目。
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
任何人都可以提供相同的查询。