微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL选择日期在定义的日期范围内的项目

如何解决SQL选择日期在定义的日期范围内的项目

我有这个查询,返回的是12个月内未售出的产品:

SELECT OITM.ItemCode,ItemName
FROM OITM LEFT OUTER JOIN (
SELECT ItemCode FROM RDR1 WHERE DocDate > DATEADD(yy,-1,GetDate()) GROUP BY ItemCode
) RDR1 ON OITM.ItemCode = RDR1.ItemCode
WHERE OnHand > 0 AND RDR1.ItemCode IS NULL

我想创建不同的查询提取不同日期范围内的项目。即1至3个月未售出的产品; 3至6个月; 6至9个月; 9至12个月;超过12个月。

这些都可以在不同的报告中,但是如果它们可以在一个报告中并且可以标识它们属于哪个日期范围,那就太好了。

我尝试使用以下查询编写查询

SELECT OITM.ItemCode,ItemName
FROM OITM LEFT OUTER JOIN (
SELECT ItemCode FROM RDR1 WHERE DocDate >= DATEADD(mm,GetDate()) AND DocDate < DATEADD(mm,-3,GetDate()) GROUP BY ItemCode) RDR1 ON OITM.ItemCode = RDR1.ItemCode
WHERE OnHand > 0 AND RDR1.ItemCode IS NULL

谢谢。

解决方法

我不相信你。您说您不希望3-6个月前订购商品。这似乎完全没有用。您可能希望最近12个月,最近9个月,至少6个月和最近3个月未订购商品。

但是,即使那样也没有道理。只需输入当天-或过去多长时间-自订购商品以来。

要获取此信息,请使用聚合:

SELECT OITM.ItemCode,OITM.ItemName,DATEDIFF(day,MAX(RDR1.DocDate),GETDATE()) as days_since_last_order
FROM OITM 
     RDR1
     ON OITM.ItemCode = RDR1.ItemCode
WHERE OITM .OnHand > 0 
GROUP BY OITM.ItemCode,OITM.ItemName;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。