我可以使用哪种SQL代码添加上一季度的某些年份?我还需要在上个季度的前后加减。
我知道上一年该怎么办
datepart(year, getdate()) - 1 as 'Year'
但是在1月,我们运行2018年第4季度的运行报告,如果我在2019年1月运行这部分代码,它将返回2018。
这就是为什么我想看看我能否获得上一季度的年份
答案 0 :(得分:1)
datepart(year, dateadd(year, -1, getdate())) as 'Year'
答案 1 :(得分:0)
我的意思是,无论您处于哪个季度,都需要报告上一个季度。因此,如果今天是2019年1月至3月,则需要在2018年第4季度报告。如果是2019年4月至6月,则该报告将是2019年第1季度,依此类推。
减去3个月为您提供上一季度的日期。该日期的年份部分将为您提供所需的年份。取该日期的月份部分,加2并除以3得到季度。
create table TestData(Today date)
insert into TestData ( Today ) values
( '2019-01-12' ),
( '2019-02-15' ),
( '2019-03-20' ),
( '2019-04-10' ),
( '2019-05-23' ),
( '2019-06-30' ),
( '2019-07-01' ),
( '2019-08-10' ),
( '2019-09-03' ),
( '2019-10-31' ),
( '2019-11-16' ),
( '2019-12-31' ),
( '2020-03-03' )
select
Today,
datepart(year,dateadd(month,-3,Today)) as [Year To Report],
(datepart(month,dateadd(month,-3,Today))+2)/3 as [Quarter To Report]
from TestData
结果:
Today Year To Report Quarter To Report
---------- -------------- -----------------
2019-01-12 2018 4
2019-02-15 2018 4
2019-03-20 2018 4
2019-04-10 2019 1
2019-05-23 2019 1
2019-06-30 2019 1
2019-07-01 2019 2
2019-08-10 2019 2
2019-09-03 2019 2
2019-10-31 2019 3
2019-11-16 2019 3
2019-12-31 2019 3
2020-03-03 2019 4
答案 2 :(得分:-1)
-运行日期:'2019-04-10' -输出:2019
select case when Month('2019-04-10') = 1 Then Year('2019-04-10') - 1 else Year('2019-04-10') end
-运行日期:'2019-01-10' -产出:2018年
select case when Month('2019-01-10') = 1 Then Year('2019-01-10') - 1 else Year('2019-01-10') end