在具有Microsoft查询功能的excel中,我们有一列的日期格式为“ JM5OPENORDERSDAY_0.CONFIRMED_DEL_DATE”。
第二列(DB1ARTSTATDAY_0.TOTAL_REP_LEADTIME)包含天,格式为数字,例如“ 40”,“ 10”和“ 5”。
我们要创建一个过滤器,以对日期超过日期的匹配进行排序,例如:CONFIRMED_DEL_DATE +“ 40”。
我和我的同事对SQL的了解非常有限,但是到目前为止,我们想到了:
SELECT
FROM
WHERE DB1ARTSTATDAY_0.MATNR = JM5OPENORDERSDAY_0.MATNR AND
DB1ARTSTATDAY_0.PLANT = JM5OPENORDERSDAY_0.PLANT AND
((JM5OPENORDERSDAY_0.CONFIRMED_DEL_DATE<(NOW()+DATEADD(DAY,DB1ARTSTATDAY_0.TOTAL_REP_LEADTIME, JM5OPENORDERSDAY_0.CONFIRMED_DEL_DATE)))
该错误发生在最后一行,这是我们自己编写的那行(非常令人惊讶)。
Microsoft查询中的图片:
错误:
答案 0 :(得分:0)
看来您的错误与您尝试操纵日期的方式有关。从您的查询中,很难确切地了解您想要什么,但是我相信您正在寻找与以下内容类似的东西:
SELECT *
FROM DB1ARTSTATDAY_0 a
JOIN JM5OPENORDERSDAY_0 AS b ON a.MATNR = b.MATNR
AND a.PLANT = b.PLANT
WHERE b.REQUESTED_DEL_DATE < DATE_ADD(CURDATE(), INTERVAL a.TOTAL_REP_LEADTIME DAY)
这将选择今天的日期在确认的删除日期之后的值以及Total_rep_leadtime列中的天数。
在此工作的更具可读性的示例:SQLFiddle
编辑:使用表名的别名,使查询更具可读性。