2016-12-15 5 views
0

Я хочу начать процесс «running total» с некоторого числа.«Выполнение всего» SQL-запроса и запуск этого процесса с пользовательским первым значением

DECLARE @x int 
SELECT @x = ... 
@x = 50 

Это мой работает общий запрос

SELECT 
    id, debit, credit, 
    SUM(debit - credit) OVER (ORDER BY id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS RunningTotal 
FROM 
    TABLE 

и результат:

debit credit  RunningTotal 
-------------------------------- 
10  0   10 
10  0   20 
10  0   30 
0  10   20 

Но я пытаюсь начать с @x;

debit  credit  RunningTotal 
----------------------------------- 
50   0   50   <--- x value (@x) 
10   0   60 
10   0   70 
10   0   80 
0   10   70 

Как это сделать?

спасибо.

ответ

0

Добавить фиктивную строку в таблицу источника с наименьшим идентификатором:

SELECT debit, credit, 
SUM(debit - credit) OVER (ORDER BY id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS RunningTotal 
FROM 
(select id, debit, credit from tab 
union all 
select -1 as id, @x as debit, 0 as credit) tab; 
+0

Большое спасибо arturro, его очень хорошо работает. – besimler

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

  • Нет связанных вопросов^_^