Полное внешнее соединение: сумма за дату - PullRequest
0 голосов
/ 04 мая 2018

У меня есть две таблицы: orders(id, date, qty) A и sales(id, date, qty) B.

Я хочу знать общее количество заказов и продаж в день (у меня может не быть или много заказов и продаж в один и тот же день).

Результаты должны выглядеть следующим образом: A.day1 A.qty B.day1 B.qty.

Я пробовал полное внешнее соединение, но общее количество за день удваивается.

1 Ответ

0 голосов
/ 04 мая 2018

Предполагая, что я понял, что вы хотите, вы находитесь на правильных линиях с полным объединением:

SELECT  ISNULL(o.OrderDate,s.SaleDate),
        o.Total AS TotalOrders,
        s.Total AS TotalSales
FROM    (
            SELECT  OrderDate,
                    SUM(Qty) AS Total
            FROM    Orders
            GROUP BY OrderDate
        ) o
        FULL JOIN (
                    SELECT  SaleDate,
                            SUM(Qty) AS Total
                    FROM    Sales
                    GROUP BY SaleDate
                  ) s
            ON o.OrderDate = s.SaleDate

Я переименовал некоторые имена ваших столбцов (дата не является хорошим именем, поскольку она зарезервирована)

Кроме того, ваша СУБД не указана. Выше SQL Server. Если вы используете MySQL, вам нужно заменить ISNULL на IFNULL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...