Select 来自临时 table 的 TOP 月份和年份数字基于整数变量

Select TOP month and year numbers from temp table based on Integer variable

我有一个临时 table,其中包含月份和年份列,并且都是整数列,我将用户加入公司时的所有月份和年份数字存储在 table 中迄今为止......存储的原因是不同的情况,因为我需要它来满足我的要求。

假设用户于 04/2019 加入公司,table 包含从 04/2019 到 12/2020 的数据。

04/2019加入的用户数据如下

 @TempTable
    Month Year
      04  2019
      05  2019
      06  2019
      -     -
      -     -
      12  2020

我使用以下语句计算了用户加入的月数,并将其存储在一个变量中。

SET @Age = ROUND(DATEDIFF(DAY, @DOJ, GETDATE())/ 30.436875E, 0)

问题是,如果用户在 24-07-2020 加入,则年龄为 5 岁,当我 select 前 5 名时,它会给我 08/2020 的结果,而我想要的结果是加入日期

简而言之,我的要求是,如果用户加入 3 个月前我需要显示 3 个月的数据,包括他加入的月份如果用户加入 2 年前比最近 12 个月我需要如果用户加入当前月份然后显示唯一的当前月份

据我了解您的问题,您希望临时 table 最多 12 行,从最近的行开始。如果是这样,您可以这样做:

select top (12) *
from @temptable
where 100 * year + month <= 100 * year(@doj) + month(@doj)
order by year desc, month desc