我有一个临时表,里面有月份和年份列,而且都是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