Я пытаюсь получить сумму всех чеков, но с разными типами и именем, и у меня возникают проблемы с получением суммы для всех из них. У меня есть сумма транзакции и дисконтированная сумма. Я хочу получить сумму двух транзакций, чтобы получить свой оценочный итог. Обратите внимание, что у меня есть различные виды транзакций, которые также имеют разные виды дисконтов и суммы транзакции (например, скидка 20%, скидка 5%).
Итак, далеко то, что я получил по моему запросу, - это только первые две записи, у которых есть Check 201, количество которых составляет 85. Тем не менее, я также хочу получить другую транзакцию с Check 301. Таким образом, получив расчетную общую сумму 225.
Кто-нибудь может мне с этим помочь?
Вот мои образцы данных.
Здесь мой запрос:
select a.DATE, a.ID, SUM(a.amount) as TRANSACTION,
(select sum(cashier.amount) from cashier where 'cashier '.'check' =
a.'check' and cashier.date = a.date and cashier.ID= a.ID GROUP BY
'cashier.check) as 'ESTIMATED VALUE' FROM cashier a where a.date =
'8/1/2017' and a.name = 'Price discounted 10%' GROUP BY a.DATE, a.ID ORDER BY a.date
Используйте case expression
для обработки суммы как положительного, так и отрицательного (для скидок), а затем просто суммируйте это.
SELECT
a.'date'
, a.ID
, SUM(a.amount) AS 'transaction'
, SUM(case when type <> 1 then a.amount*-1.0 else a.amount end) AS 'estmated_value'
FROM cashier a
WHERE a.date = '2017-01-08'
AND a.name = 'Price discounted 10%'
GROUP BY
a.'date'
, a.ID
ORDER BY
a.'date'