У меня есть таблица данных, которая имеет годовые точки данных и квартальные точки данных. Я хочу вычесть квартальные точки данных из соответствующей предыдущей ежегодной записи, например. Годовой 2014 - Q3 2014, используя t-SQL. У меня есть переменная id для каждой записи, плюс переменная id примитива, которая показывает, какая ежеквартальная запись соответствует той годовой записи. Смотрите ниже:Вычесть несоответствующие значения в одной строке в t-SQL
CurrentDate PreviousDate Value Entry Id Reconcile Id Annual/Quarterly
9/30/2012 9/30/2011 112 2 3 Annual
9/30/2013 9/30/2012 123 1 2 Annual
9/30/2014 9/30/2013 123.5 9 1 Annual
12/31/2013 9/30/2014 124 4 1 Quarterly
3/31/2014 12/31/2013 124.5 5 1 Quarterly
6/30/2014 3/31/2014 125 6 1 Quarterly
9/30/2014 6/30/2014 125.5 7 1 Quarterly
12/31/2014 9/30/2014 126 10 9 Quarterly
3/31/2015 12/31/2014 126.5 11 9 Quarterly
6/30/2015 3/31/2015 127 12 9 Quarterly
Например, сверка ID 9 для ежеквартальных записей соответствует Входу ID 9, который является ежегодной записью.
У меня есть код, чтобы просто вычесть предыдущую запись из текущей записи, но я не могу понять, как вычитать квартальные записи из годовых записей, в которых идентификатор Entry и Reconcile ID совпадают.
Вот код, который я использую, что приводит к правильному вычислению, но увеличивает количество результатов по многим строкам. Я также пробовал это как внутреннее соединение. Я хочу только оригинальные 10 строк, плюс новый разностный столбец:
SELECT DISTINCT T1.[EntryID]
, [T1].[RECONCILEID]
, [T1].[CurrentDate]
, [T1].[Annual_Quarterly]
, [T1].[Value]
, [T1].[Value]-T2.[Value] AS Difference
FROM Table T1
LEFT JOIN Table T2 ON T2.EntryID = T1.RECONCILEID;
Можете ли вы привести пример того, что вы» в попытке получить результат? – Siyual
Это легко сделать с помощью самостоятельного объединения или коррелированного подзапроса. Google - один или оба для примера. –
Я что-то упустил или группируюсь по всем полям? Не было бы проще использовать «выбрать отличный»? –