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;

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...