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
我有一个临时 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