T-SQL-按年份,月份查询排序不符合我的需要

时间:2019-06-29 12:44:08

标签: sql-server tsql

我有一个简单的查询,应该返回按年份和月份从下降顺序列出的记录列表,从提供的年份和月份开始:

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

我无法查看如何计算。有想法吗?

谢谢!

2 个答案:

答案 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