SQL:获取最近3个月的数据(列中只有可用数据),而不是当前月份或今天?

时间:2018-02-07 09:52:47

标签: sql sql-server sql-server-2008

任何人都可以帮助我解决这个问题。我需要从特定列获取最近3个月的数据,该数据不是从当前日期开始,而是仅从可用日期开始。

前:

我有一个名为Shop的表和名为OrderDate的列,在OrderDate我的日期只有30-06-2017,但今天的日期是07-02-2018。从这里我需要获得最后3个月的数据,即17年6月,17日和2017年4月。

如果直到17年7月可获得的数据意味着我需要结果Jul'17,Jun'17& May'17。等等。

任何可以帮助在SQL中实现这一点吗?

提前致谢。

3 个答案:

答案 0 :(得分:0)

我认为列OrderDate属于datedatetime数据类型。

select * from Shop 
where OrderDate >
    (select dateadd(month, -3, max(OrderDate)) from Shop)

答案 1 :(得分:0)

我认为最简单的方法是选择该表中最大的日期并使用它来创建过滤器。

因此;

Select * 
from table 
where date >
Dateadd
('m', -3, 
( Select Max (date) from table)
)

提前道歉,格式不佳

答案 2 :(得分:0)

您必须在表格中找到最大日期并使用:

select s.*
from Shop s,
(select convert(date, 
                format(
                  dateadd(MONTH, -3, max(OrderDate)), 'yyyyMM01')
                 ,112) as fromDate from Shop) md 
where s.OrderDate >= md.fromDate