Выполнение суммы, если определенные условия верны

Я пытаюсь создать запрос, который делает сумму, если определенный параметр устанавливается. Например:

SELECT SUM(IF(<condition>,field,field)) AS total_value

... который работает правильно.

Но у меня есть больше чем одно условие в ЕСЛИ (), как:

SELECT SUM(IF(<condition> <condition>,field,field)) AS total_value

.. который не работает, у Вас могла быть какая-либо идея, каков должен быть правильный запрос для этого.

Обновление

Извините за неправильные запросы правильные запросы

Мой текущий запрос выглядит примерно так: ВЫБЕРИТЕ СУММУ (ЕСЛИ (condition1, поле, поле)) AS total_value, который работает правильно.

Но у меня есть больше чем одно условие в том, ЕСЛИ (), как ИЗБРАННАЯ СУММА (ЕСЛИ (condition1 condition2, поле, поле)) AS total_value, который не работает, у Вас могла быть какая-либо идея, каков должен быть правильный запрос для этого.

8
задан Tim Post 1 April 2011 в 10:07
поделиться

3 ответа

Посмотрите на оператор Case:

Select Sum( Case When column = test Then column2 Else column3 End )
...

Если у вас несколько условий, вы все равно можете использовать case:

Select Sum( Case 
            When column1 = 'Foo' Then column2 
            When column1 = 'Bar' Then column3
            When column1 = 'Gamma' Then column2 + column3
            Else column3 End )
From ...

В этом сценарии, если столбец1 не null и не равен 'Foo', то он перейдет к следующему оператору When. Если этот тест не верен, то он переходит к следующему и так далее.

9
ответ дан 5 December 2019 в 14:00
поделиться
SELECT SUM(IF(<condition1>, 
              IF(<condition2>,
                 <field1>,
                 <field2>),
              <field2>)) AS total_value
0
ответ дан 5 December 2019 в 14:00
поделиться
select sum(case when a = b and x = y then field1 + field2 else 0 end)

Обновление:

Возможно, вы имеете в виду следующее:

select sum(case when a = b then field1 else field2 end)
2
ответ дан 5 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: