Рассчитать между 2 рядами - PullRequest
0 голосов
/ 24 октября 2019

Интересно, кто-нибудь может помочь? У меня есть проблема, когда мне нужно вычислить разницу между строкой 1 и строкой 2, а затем ввести ее в другой столбец

. Мне нужно взять значение в столбце, а затем рассчитать по строке 3 и затем ввестиэто значение в другую строку в новом столбце.

Это значение затем используется для вычисления строки 4 и т. д.

Не уверен, если это возможно, любая помощь будет оценена

Пробовал опережать / отставать, плотный ранг

Ниже приведена таблица с необработанными данными

Col1    Col2    Col3    Amt Date
10000   142211  1   -64.05  2005-07-19
10000   142211  2   64.05   2005-07-01
10000   142211  3   -74.91  2005-08-17
10000   142211  4   74.91   2005-08-01
10000   142211  5   -74.91  2005-09-19
10000   142211  6   74.91   2005-09-01
10000   142211  7   0.00    2005-01-01
10000   142211  8   74.91   2005-10-01
10000   142211  9   -74.91  2005-10-19
10000   142211  10  74.91   2005-11-01

Разница между 1 и 2 будет указана в новом столбце

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Вы описываете, что звучит как накопительная функция. Тем не менее, я не вижу, что разница полезна. Я думаю, что накопительная сумма полезна. ,,и вы смущены отрицательными значениями в данных.

Итак, это может быть тем, что вы действительно хотите:

select t.*,
       sum(amount) over (partition by col1, col2 order by col3) as running_amount
from t;
0 голосов
/ 24 октября 2019

Вам просто нужна функция LAG. Попробуйте Нравится:

SELECT *, Amt - LAG(Amt, 1, 0) OVER (ORDER BY UpdatedDate ASC)
FROM dbo.crm_Transactions
WHERE TenancyRef = '142211'
ORDER BY TenancyRef
    ,TransNo ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...