考虑以下 JD Edwards 数据库表:
- 工单路由(实际名称:F3112)
- 工单时间事务(实际名称:F31122)
这些表通过一个公共字段链接:文档编号 (DOCO)。对于 F3112 中的给定记录,F31122 中可能有零个或多个记录。
我正在尝试编写一个查询,该查询从 F3112 返回满足以下条件的记录:
- F31122 中至少有一条匹配记录,其中 F31122.WTHRW(工作小时数)> 0。
- F3112.WLOPST(状态代码)介于 30 和 99(含)之间。
- F3112.WLSTRT(开始日期)>= 指定日期(JDE 儒略日期)。
- F3112.WLCTS4(金额 - 未计算的直接人工)= 0或F3112.WLCTS9(小时 - 未计算的直接人工)= 0。
我想出了下面的 SQL,它似乎得到了我想要的——但我不是 100% 确定。
SELECT DISTINCT F3112.WLDOCO AS DOC_NO,
F3112.WLDCTO AS DOC_TYPE,
F3112.WLOPST AS STATUS,
F3112.WLCTS4 AS CTS4,
F3112.WLCTS9 AS CTS9,
F3112.WLSTRT AS START,
F3112.WLSTRX AS COMPLETE
FROM PROD2DTA.F3112 F3112
INNER JOIN PROD2DTA.F31122 F31122
ON F3112.WLDOCO = F31122.WTDOCO
AND (SELECT COUNT(*)
FROM PROD2DTA.F31122
WHERE F31122.WTHRW <> 0) > 0
WHERE F3112.WLOPST BETWEEN '30' AND '99'
AND F3112.WLSTRT >= 121060
AND ( F3112.WLCTS4 = 0
OR F3112.WLCTS9 = 0 )
我不需要从 F31122 表中返回任何内容。我只需要确保满足选择标准的第一个项目符号。
我最初没有 DISTINCT 子句并且得到了多次点击。我认为这是笛卡尔积情况。
这对我想做的事情有意义吗?如果没有,请告诉我我需要做什么。