上一年的季度值

Quarter values from previous year

我有查询,工作正常:

select t1.[Fiscal Year],
t1.[Level1], t1.[Level2], t1.[colE],t1.[colF],
t1.Value,t2.Value [previous_value]
from  
(  select [Fiscal Year],[Level1],[Level2],[colE],[colF],sum([CA Service Bookings Net]) value
  from [table1] 
  group by [Fiscal Year],[Level1],[Level2],[colE],[colF]
)t1
left JOIN
(  
select [Fiscal Year],[Level1],[Level2],[colE],[colF],sum([CA Service Bookings Net]) value
  from [table1] 
  group by [Fiscal Year],[Level1],[Level2],[colE],[colF]
)t2
ON t1.[Fiscal Year] = t2.[Fiscal Year]+1 and
t1.[Level1] = t2.[Level1] and
t1.[Level2] = t2.[Level2] and
t1.[colE] = t2.[colE] and
t1.[colF] = t2.[colF]

当我想添加更多列(colE、colF、colG...)时没问题。

但是当我尝试添加列时:[QuarterID] 包含的值为:2015Q1、2015Q2、2015Q3、2015Q4、2016Q1...

t2.Value [previous_value] return 我的空值。你知道什么是原因吗?

这是带有 [QuarterID] 的代码:

select t1.[Fiscal Year],t1.[QuarterID],
t1.[Level1], t1.[Level2], t1.[colE],t1.[colF],
t1.Value,t2.Value [previous_value]
from  
(  select [Fiscal Year],[QuarterID],[Level1],[Level2],[colE],[colF],sum([CA Service Bookings Net]) value
  from [table1] 
  group by [Fiscal Year],[QuarterID][Level1],[Level2],[colE],[colF]
)t1
left JOIN
(  
select [Fiscal Year],[QuarterID],[Level1],[Level2],[colE],[colF],sum([CA Service Bookings Net]) value
  from [table1] 
  group by [Fiscal Year],[QuarterID],[Level1],[Level2],[colE],[colF]
)t2
ON t1.[Fiscal Year] = t2.[Fiscal Year]+1 and
t1.[Level1] = t2.[Level1] and
t1.[Level2] = t2.[Level2] and
t1.[colE] = t2.[colE] and
t1.[colF] = t2.[colF] and
t1.[QuarterID] = t2.[QuarterID]

我能想象得到 NULLS 的唯一方法是,如果您没有将 QuarterID 正确添加到 t1 和 t2 的 JOIN 条件,或者如果有您希望在 t2 中找到的 QuarterID,但那不是在那里。

您加入的方式是让 t1 中的 2015Q1 加入 t2 中的 2014Q1 吗?是否存在所有必需的 quarterID?

刚刚完成并且工作完美:

t1.[Fiscal Quarter ID] = cast((cast(left(t2.[Fiscal Quarter ID],4) as numeric) +1) as varchar)+right(t2.[Fiscal Quarter ID],2)