Вычитание запроса SQL Server

#sql #sql-server-2008

#sql #sql-server-2008

Вопрос:

У меня есть таблица главной книги, смотрите изображение

Я хочу написать запрос, который будет вычитать данные DR-CR .. и повторно запрашивать только данные о количестве.

следует исключить оплаченную сумму 5000, потому что у нас есть 2000 на 1-3-2014 и 3000 на 1-4-2014

не могли бы вы, пожалуйста, помочь… Я сделал это в приложении. Но я хочу сделать это в своем SQL-запросе. введите описание изображения здесь

Комментарии:

1. Почему бы не опустить два $1000 значения вместо одного $2000 ? Любой из них в сочетании с $3000 будет $5000

2. Потому что это вычисление в бухгалтерской книге. когда кто-то заплатит, он сначала скорректируется с учетом просроченной задолженности … вот почему 2000 и 3000 опущены

3. Разве не должно быть поля для указания учетной записи или чего-то подобного? Кроме того, что, если платеж составил 1000? Каким тогда будет желаемый результат?

4. Мой вопрос в том, как вы определяете, что собираетесь использовать 2000 долларов вместо двух сумм в 1000 долларов? Я уверен, что это имеет смысл для вас, но вы не указали нам, как принимается это решение

5. @AbeMiessler, решение принимается путем перехода в порядке возрастания дат. По крайней мере, так я воспринял его ответ. Однако на вопрос Дэна все еще нужно ответить.

Ответ №1:

В SQL Server 2008 нет кумулятивной суммы. Итак, вам придется использовать более сложные выражения. Идея состоит в том, чтобы взять совокупную сумму DR, затем вычесть сумму кредита и выбрать строки, где значение положительное.

 select l.*
from (select l.*,
             (select sum(dr)
              from ledger l2
              where l2.id <= l.id
             ) as cumdr,
             sum(cr) over () as sumcr
      from ledger l
     ) l
where cumdr - sumcr > 0;