我有一个简单的查询,应该返回按年份和月份从下降顺序列出的记录列表,从提供的年份和月份开始:
select *
from mytable
where year <= @year
and month <= @month
order by year desc, month desc
问题是,如果我提供year = 2019和month = 2,它将返回:
2019,2
2019,1
2018,2
2018,1
2017,2
2017,1 etc
您可能会想,我需要它返回:
2019,2
2019,1
2018,12
2018,11
2018,10 etc
我无法查看如何计算。有想法吗?
谢谢!
答案 0 :(得分:3)
您需要更改where
子句:
select t.*
from mytable t
where year < @year or
(year = @year and month <= @month)
order by year desc, month desc;
另一种方法是使用算术,实际上是计算月份:
where year * 12 + month <= @year * 12 + @month
答案 1 :(得分:0)
以下情况会执行以下操作,直到您的年和月不是数字数据类型:
, which sets