Я полагаю, что вы хотели выполнить условное агрегирование, получая сумму за все транзакции в США за день и сумму всех транзакций в Великобритании за тот же день. Затем вам пришлось переместить CASE
в sum()
, добавив сумму только в том случае, если вы ищите страну, в противном случае ноль.
Также ваш подзапрос не нужен.
SELECT t.date,
sum(CASE m.country
WHEN 'US' THEN
t.transamt
ELSE
0
END) totaltamt_us,
sum(CASE m.country
WHEN 'UK' THEN
t.transamt
ELSE
0
END) totaltamt_uk
FROM transaction t
INNER JOIN master m
ON m.aid = t.accountid
WHERE m.county IN ('US',
'UK')
GROUP BY t.date;
Если вы не настаиваете на том, чтобы в разных столбцах были разные суммы, но также принимаете строки, это может быть просто:
SELECT m.country,
t.date,
sum(t.transamt) totaltamt
FROM transaction t
INNER JOIN master m
ON m.aid = t.accountid
WHERE m.county IN ('US',
'UK')
GROUP BY m.country,
t.date;