Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как получить разницу сумм в SQL?

Дима Окружко Мастер (1363), на голосовании 3 года назад
Есть база данных вида:
ID,TYPE,VALUE
TYPE может принимать 2 значения - 1 и 0
Можно ли сделать 1 запрос который позволит получить сумму всех VALUE с TYPE=1, затем сумму всех VALUE с TYPE=2 и в итоге получить их разницу?
Голосование за лучший ответ
Аглая Шниц Искусственный Интеллект (145166) 3 года назад
SELECT
SUM(case when TYPE = 1 then VALUE end) - SUM(case when TYPE = 0 then VALUE end) as DIFFERENCE
FROM
Таблица
Дима ОкружкоМастер (1363) 3 года назад
Спасибо, сработало!
Аглая Шниц Искусственный Интеллект (145166) не за что. не знаю, как оно сработает, если, скажем, ни одной записи с TYPE = 0 не найдётся. может, придется эти SUM() в COALESCE() обернуть.
Аглая ШницИскусственный Интеллект (145166) 3 года назад
ну-у, может, так как-то попробовать:

SELECT
SUM(SUMV)
FROM
(
SELECT SUM(VALUE) as SUMV FROM Таблица1
UNION ALL
SELECT SUM(VALUE) as SUMV FROM Таблица2 WHERE ID = 12345
) A
Дима Окружко Мастер (1363) Аглая Шниц, Сработало. Спасибо большое!
Похожие вопросы