根据Integer变量从临时表中选择TOP月份和年份编号



我有一个临时表,里面有月份和年份列,而且都是Integer列,我将从用户加入公司到现在的所有月份和年份都存储在该表中。。。存储的原因是另一种情况,因为我需要它来满足我的需求。

假设用户于2019年4月加入该公司,该表包含2019年4日至2020年12月的数据。

如果用户在2019年4月加入,数据如下

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

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

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

问题是,如果用户在2020年7月24日加入,年龄为5岁,当我选择前5名时,它会给我2020年8月的结果,而我想要加入之日的结果

简而言之,我的要求是,如果用户在3个月前加入,我需要显示3个月的数据,包括他加入的月份

根据我对您的问题的理解,您希望从临时表中最多有12行,从最近的一行开始。如果是这样,你可以做:

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

最新更新