#mysql #if-statement #sum
#mysql #if-оператор #сумма
Вопрос:
У меня есть следующий запрос:
SELECT BaDebet2 - BaCredit2 AS TOTAL FROM balansen
Редактировать
Я хочу суммировать все записи BaDebet2 только тогда, когда общее значение больше 0
Комментарии:
1. Ваш вопрос сбивает с толку даже такого человека, как я, который сделал много приложений для учета двойной записи. Возможно, вы захотите показать несколько примеров, где это полезно. В частности, почему вы хотите добавить значения дебета дважды? Это вообще не сбалансирует бухгалтерские книги. Короче говоря, это возможно, но, вероятно, это не очень хорошая идея
![]()
Ответ №1:
Я думаю, что это решит вашу проблему. Второй запрос выдаст BaDebet2, если BaDebet2 — BaCredit2> 0, в противном случае 0.
SELECT SUM(BaDebet2_Actual) FROM
(SELECT IF(BaDebet2 - BaCredit2>0, BaDebet2 ,0) AS BaDebet2_Actual
FROM balansen) A;
Ответ №2:
Это то, что вы хотите, верно?
SELECT SUM(BaDebet2 - BaCredit2) AS TOTAL, IF(SUM(BaDebet2 - BaCredit2) > 0, SUM(BaDebet2 - BaCredit2) BaDebet2, NULL) FROM balansen
если TOTAL
> 0 у вас есть BaDebet2 TOTAL
во втором столбце, в противном случае вы получаете NULL.
Комментарии:
1. Да, это то, что я хочу, но, к сожалению, я допустил просчет. Я хочу сделать баланс, но это был неправильный путь. Извините за это, но спасибо вам всем за помощь.
2. Обратите внимание, что OP говорит для каждой записи из таблицы … .
Ответ №3:
Попробуйте это:
SELECT
CASE WHEN SUM(BaDebet2 - BaCredit2)>0
THEN SUM(BaDebet2 - BaCredit2) BaDebet2
ELSE SUM(BaDebet2 - BaCredit2) END AS TOTAL
FROM balansen
Комментарии:
1. Марко, спасибо за твой ответ, но мне нужен РЕГИСТР для каждой записи, а не для СУММЫ. Вы знаете, возможно ли это?