|
原帖由 baiyuff 于 2009-5-14 18:48 发表 ![]()
可以帮我修改一下这个语句吗
针对你写的如下SQL:
SELECT T0.[DocNum] as 销售订单, T0.[CardCode], T1.[ItemCode], T1.[Dscription], T1.[Quantity] as 销售单数量,T0.[DocDate] as 下单日期, T0.[DocDueDate] as 交货日期, T2.[DocNum] as 生产订单, T2.[PlannedQty] as 计划生产数量, T2.[OriginNum], T2.[CardCode], T3.[DocNum] as 收货单号, T3.[DocDate] as 收货日期, T4.[ItemCode] as 收货物料, T4.[Dscription], T4.[Quantity] as 收货数量
FROM [dbo].[ORDR] T0 INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry, OWOR T2, OIGN T3 INNER JOIN IGN1 T4 ON T3.DocEntry = T4.DocEntry
WHERE (T0.[DocNum]=T2.[OriginNum]) and (T2.[DocNum]=T4.[BaseRef]) and (T0.[DocDueDate] >=[%1] or [%1]='') and ( T0.[DocDueDate]<=[%2] or [%2]='')
提两点建议:
1、SQL语句写的不太规范,我觉得即然你使用INNER JOIN进行联接,那就不要再在WHERE 条件中加联接条件了。
2、ORDR T0 、RDR1 T1 与OWOR T2的关联, 至少要有这样的条件:T0.DocNum = T2.OriginNum AND T1.ItemCode = T2.ItemCode ,如果一个销售订单对应多个生产工单,则需要加个GROUP BY 了。 |
|