我很好的参考 How to filter my results so it shows the last four months of data - sql
到目前为止我已经
了SELECT ItemCode, SUM(QuantityOrdered) AS Total_Quantity
FROM OrderDetail
GROUP BY ItemCode
ORDER BY SUM(QuantityOrdered) DESC;
显示
ItemCode Total_Quantity
PL 1200
MA 975
153 200
虽然PL&#39的订单数量为2月9日/ 23日,数量为200,2014年2月3日数量为200,2016年6月6日数量为200日元时间2017年1月21日
如何过滤掉它,以便仅显示今天过去四个月的结果?
我可以在查询设计或SQL代码上做点什么吗?
对行
WHERE dbo_SO_SalesOrderHeader.OrderDate >= dateadd(month, -4, cast(getdate() AS DATE))
上的语法错误有任何想法。非常感谢你!
SELECT dbo_SO_SalesOrderDetail.ItemCode, SUM(dbo_SO_SalesOrderDetail.QuantityOrdered) AS Total_Quantity, dbo_SO_SalesOrderHeader.OrderDate
FROM dbo_SO_SalesOrderDetail INNER
JOIN dbo_SO_SalesOrderHeader ON dbo_SO_SalesOrderDetail.SalesOrderNo = dbo_SO_SalesOrderHeader.SalesOrderNo
WHERE dbo_SO_SalesOrderHeader.OrderDate >= dateadd(month, -4, cast(getdate() AS DATE))
GROUP BY dbo_SO_SalesOrderDetail.ItemCode
ORDER BY SUM(dbo_SO_SalesOrderDetail.QuantityOrdered) DESC;
答案 0 :(得分:3)
添加一个where子句并比较" DateField"到目前的日期。因此,如果您的DateField名为OrderDate,则替换" DateField"使用" OrderDate"
SELECT ItemCode, SUM(QuantityOrdered) AS Total_Quantity
FROM OrderDetail
JOIN OrderHeader on OrderHeader.Orderid=OrderDetail.OrderID
WHERE OrderHeader.OrderDate >= dateadd(month, -4, cast(getdate() as DATE))
GROUP BY ItemCode
ORDER BY SUM(QuantityOrdered) DESC;
我猜你的日期字段实际上在OrderHeader表中,如果是这样,你需要加入OrderHeader表。以下是一个例子
testid stepid serverid duration
1 1 1 10
1 2 1 11
2 1 2 12
2 2 2 13
3 1 1 14
3 2 1 15
4 1 2 16
4 2 2 17