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

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

Дима Окружко Мастер (1363), на голосовании 3 года назад
Есть 2 таблицы: T и Z
Таблица T содержит столбцы ID и KWT, таблица Z содержит столбцы RECNO и KWT1
Мне нужно получить такой результат:
Сумма столбцов KWT таблицы T где ID=1 OR ID=2 добавить сумму столбцов KWT таблицы Z где RECNO=3 и 5 и отнять сумму столбцов KWT таблицы Z где RECNO=13 и 15
Это если в упрощённом виде.
Я пробовал так:
SELECT CAST(SUM(case when (t.ID=3 OR t.ID=4 OR t.ID=14 OR t.ID=15 OR t.ID=42 OR t.ID=43) then t.KWT1 end) AS CHAR)+CAST(SUM(case when (z.RECNO=144 OR z.RECNO =145) then (z.KWT1+z.LOST1) end) AS CHAR) - CAST(SUM(case when (z.RECNO=234 OR z.RECNO =235) then (z.KWT1+z.LOST1) end) AS CHAR)) AS RES
from tyagovie_2021.t2021_3 t, zakupka.z2021_3 z
Дополнен 3 года назад
Нашёл решение:
SELECT REPLACE(CAST(ROUND(SUM(RES)/1000,3) AS CHAR),'.',',') AS RES
FROM
(
SELECT SUM(t.KWT1) AS RES FROM tyagovie_2021.t2021_3 t WHERE t.ID=3 OR t.ID=4 OR t.ID=14 OR t.ID=15 OR t.ID=42 OR t.ID=43
UNION ALL
SELECT SUM(z.KWT1+z.LOST1) FROM zakupka.z2021_3 z WHERE z.RECNO=144 OR z.RECNO=145
UNION ALL
SELECT -1*SUM(z.KWT1+z.LOST1) FROM zakupka.z2021_3 z WHERE z.RECNO=234 OR z.RECNO=235
) r
Но если есть альтернативные варианты решения - напишите.
Голосование за лучший ответ
Василий Полубнев Просветленный (23523) 3 года назад
Первое, что бросилось в глаза - вместо t.ID=3 OR t.ID=4 OR t.ID=14 OR t.ID=15 OR t.ID=42 OR t.ID=43 я бы написал t.ID in (3,4,14,15,42,43)
Дима ОкружкоМастер (1363) 3 года назад
Такого я не знал. Спасибо за совет.
Не знаю подействует ли в моей версии но всё же.
Василий Полубнев Просветленный (23523) Дима Окружко, Это входит в стандарт SQL какого-то лохматого года, 92, по-моему
Похожие вопросы