任何人都可以帮助我解决这个问题。我需要从特定列获取最近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中实现这一点吗?
提前致谢。
答案 0 :(得分:0)
我认为列OrderDate
属于date
或datetime
数据类型。
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