Условная сумма в 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
Другие вопросы по тегам