2016-04-08 4 views
1
года

я был запрос, который работает отлично:значения Четверть от предыдущего

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] вернуть мне нулевые значения. Вы знаете, что может быть причиной?

Вот код с [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] 
+0

Где в запросе Вы добавляете [QuarterID]? –

+0

Im добавляя в exaccty те же места, что и для примера Level1 – 4est

+0

Ваша колонка QuarterId, вероятно, не подключена должным образом. к чему вы тоже присоединяетесь? – BuddingProgrammer

ответ

0

просто сделал это и работает идеально:

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

Единственный способ, которым я могу себе представить, вы получаете NULLS, если вы либо не правильно добавить QuarterID к РЕГИСТРИРУЙТЕСЬ состояния t1 & t2, или если это QuarterID, которые вы ожидаете найти в t2, но их там нет.

Вы присоединились таким образом, чтобы 2015Q1 в t1 присоединился к 2014Q1 в t2? И существуют ли все необходимые квестовые идентификаторы?

+0

Я только что обновил вопрос, теперь содержит код с столбцом QuarterID – 4est

+0

Точно точка моего последнего предложения. Вы присоединяетесь к 't1. [Fiscal Year] = t2. [Fiscal Year] + 1' Не кажется ли вам, что вам нужно что-то сделать, когда вы присоединяетесь к' t1. [QuarterID] = t2. [QuarterID] '?? ? Если t1 QuarterId равен '2014Q1', не будет ли t2 QuarterId быть' 2015Q1' ??? –

+0

ok, мне нравится: left ([Fiscal Quarter ID], 4) + right ([Fiscal Quarter ID], 2), как увеличить первое предложение на 1 год? – 4est

Смежные вопросы