我有 3 个文件
- 订单标题 - 有订单#
- 订单详细信息 - 带有产品代码和数量的详细信息行,键入订单#
- 寄售物品文件 - 寄售产品清单(想想我们销售但归他人所有的产品)。并非我们销售的所有产品都是寄售的;此文件包含产品主文件的子集。此文件中可能有重复项,因为 key 是 product+supplier。
我想产生这个结果集:
Order Number Order Date Number of lines Total Qty Total Consigned Qty
1 20130101 5 10 5
2 20130101 4 20 0
3 20130101 7 41 20
4 20130101 1 66 66
我的查询看起来像这样(简化)
SELECT H.OrderNo, H.Date, Count(D.LineNo), Sum(D.ProdQty)
FROM Header H
JOIN Detail D ON (H.PO# = D.PO#)
WHERE H.DATE > 20130101
GROUP BY H.PO#, H.Date
ORDER BY H.PO#, H.Date
报表中的寄售数量表示从明细文件上的产品代码到寄售文件上的产品代码的匹配数乘以明细行上的数量。
我的问题是委托数量,因为我在“详细文件”和“寄售文件”之间存在“一对可能”的关系。我是否需要一个临时表,子选择,每次提取时都需要手动编码?
我正在使用 IBM/DB2 SQL,所以请不要使用 mysql/mssql/oracle 特定的技巧。
谢谢