【问题标题】:sql- show only the last four monthsql-仅显示最近四个月
【发布时间】:2017-06-17 09:16:33
【问题描述】:

我的好参考是 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 的订单是 2011 年 9 月 23 日的 200 份 2014 年 2 月 3 日的 200 份 2016 年 12 月 6 日的 200 份 2017 年 1 月 21 日 200 份

我怎样才能过滤掉它以仅显示今天月份的最近四个月的结果?

我可以在查询设计或 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;

【问题讨论】:

    标签: sql ms-access sql-view


    【解决方案1】:

    添加 where 子句并将“DateField”与当前日期进行比较。因此,如果您的 DateField 名为 OrderDate,请将“DateField”替换为“OrderDate”

    SELECT ItemCode, SUM(QuantityOrdered) AS Total_Quantity
    FROM OrderDetail 
    where DateField >= dateadd(month, -4, cast(getdate() as DATE)) 
    GROUP BY ItemCode
    ORDER BY SUM(QuantityOrdered) DESC;
    

    我猜测您的日期字段实际上在 OrderHeader 表中,如果是这样,您将需要加入 OrderHeader 表。下面是一个例子

    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;
    

    【讨论】:

    • 谢谢!将尽快尝试并投票! :) 再次感谢您
    • 感谢您提出“加入”的想法。你是对的!如果您不介意再看一遍,我已经编辑了我的问题。非常感谢您的帮助!
    • 我缺少操作员错误。抱歉后续跟进;)再次感谢您!会尽快回复
    • 我认为强制转换在 Access 中无效。这应该工作:WHERE OrderHeader.OrderDate >= dateadd("m", -4, Date())
    • 非常感谢@ChristopherD。乔尔和你都救了我!!祝你有美好的一天!
    猜你喜欢
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    相关资源
    最近更新 更多