Как рассчитать промежуточную сумму в SQL без использования курсора? - PullRequest
24 голосов
/ 20 июля 2009

Я опускаю все настройки курсора и SELECT из временной таблицы для краткости.По сути, этот код вычисляет текущий баланс для всех транзакций на транзакцию.

WHILE @@fetch_status = 0
BEGIN

    set @balance = @balance+@amount

    insert into @tblArTran values ( --from artran table
                @artranid, @trandate, @type, 
                @checkNumber, @refNumber,@custid,
                @amount, @taxAmount, @balance, @postedflag, @modifieddate )


    FETCH NEXT FROM artranCursor into 
            @artranid, @trandate, @type, @checkNumber, @refNumber,
            @amount, @taxAmount,@postedFlag,@custid, @modifieddate

END

Вдохновленный этим кодом из ответа на другой вопрос,

SELECT @nvcConcatenated = @nvcConcatenated + C.CompanyName + ', '
FROM tblCompany C
WHERE C.CompanyID IN (1,2,3)

Мне было интересно, имел ли SQLспособность суммировать числа таким же образом, как это объединяет строки, если вы понимаете мое значение.То есть создать «текущий баланс» для каждой строки без использования курсора.

Возможно ли это?

Ответы [ 11 ]

0 голосов
/ 20 июля 2009

То, что SELECT @nvcConcatonated бит возвращает только одиночное объединенное значение. (Хотя он вычисляет промежуточные значения для каждой строки, вы можете получить только окончательное значение).

Итак, я думаю, что ответ - нет. Если вы хотите получить единую конечную сумму, вы, конечно, просто используете SUM.

Я не говорю, что вы не можете сделать это, я просто говорю, что вы не можете сделать это, используя этот «трюк».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...