我是SQL新手。我已经在SQL Developer中创建了一个脚本,然后将其转换为Excel VBA表单以构建一个交互式工具来按需提取此特定报告。效果很好!
现在的问题是,我无法过滤日期结果以仅显示实际日期的前2天,最后是实际日期的后2天。
SQL代码:
Select p.prdord PO, q.actdat,P.itmcod Finished_Item, p.SPCCD1 Feeder_Item,
p.expqty Qty_Needed, p.PENDQTY Amount_Pulled, p.actqty Still_needed
from PORECIPE p join
prdque q
on p.prdord = q.prdord
order by p.prdord
答案 0 :(得分:0)
此代码是当前+ 2天的基于Oracle的过滤:
SELECT
p.prdord PO,
q.actdat,
p.itmcod Finished_Item,
p.spccd1 Feeder_Item,
p.expqty Qty_Needed,
p.pendqty Amount_Pulled,
p.actqty Still_needed
FROM
porecipe p
INNER JOIN prdque q on p.prdord = q.prdord
WHERE
q.actdat BETWEEN SYSDATE-2 AND SYSDATE+2
ORDER BY p.prdord
它假定actdat是您的“实际日期”列。如果不是,请在WHERE子句中使用其他列名。请记住,BETWEEN是包容性的,因此,如果此报告在1月3日正好是下午6点运行,它将包含从1日下午6点到5日下午6点的所有记录。如果有记录,例如不应包含5日下午6点,例如使用改为q.actdat > SYSDATE-2 AND q.actdat < SYSDATE+2
编辑
您要求删除周末,将其添加到where子句:
AND TRUNC (q.actdat) - TRUNC (q.aftdat, 'IW') < 5
从字面上看,它将删除q.actdat是周六或周日的所有结果
但是,如果您想在2个工作日至2个工作日之间获得结果,则涉及的内容会更多一些-如果可以,请发表评论