сумма mysql с помощью оператора if

#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. Марко, спасибо за твой ответ, но мне нужен РЕГИСТР для каждой записи, а не для СУММЫ. Вы знаете, возможно ли это?