SQL 选择日期在定义的日期范围内的项目
SQL Selecting an item where its date falls between a defined date range
我查询 returns 个产品在 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,-1,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 个月、lsat 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;
我查询 returns 个产品在 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,-1,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 个月、lsat 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;