Условная сумма в sql, получить правильную сумму из другой таблицы на основе условия в поле
У меня есть таблица (tbl1), в которой указана неправильная сумма продажи для "магазина 3".
**date store sale**
Mar, 2013 store 1 100
Apr, 2013 store 1 80
Mar, 2013 store 2 70
Mar, 2013 store 3 125
Apr, 2013 store 3 80
Правильное количество в другой таблице (tbl2):
**date store sale**
Mar, 2013 store 3 140
Apr, 2013 store 3 170
Теперь мне нужно написать запрос, который генерирует результаты, как показано ниже:
**store total_sale**
store 1 180
store 2 70
store 3 310
Я пробовал разные способы написания операторов CASE, но я ошибаюсь. Я упростил реальный вопрос здесь, надеясь получить помощь от сообщества. Спасибо!
1 ответ
Решение
Попробуй,
SELECT a.Store,
COALESCE(c.TotalSale, b.TotalSale) AS TotalSale
FROM (SELECT DISTINCT Store FROM Table1) a
INNER JOIN
(
SELECT Store, SUM(sale) TotalSale
FROM Table1
GROUP BY Store
) b ON a.Store = b.Store
LEFT JOIN
(
SELECT Store, SUM(sale) TotalSale
FROM Table2
GROUP BY Store
) c ON a.Store = c.Store