Дополнен 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
Но если есть альтернативные варианты решения - напишите.
Таблица 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