全外连接:每个日期的总和

时间:2018-05-04 11:05:03

标签: sql date join sum

我有两个表:orders(id, date, qty) Asales(id, date, qty) B

我想知道每天的总订单和销售数量(我可能在同一天没有订单和销售数量。)

结果应如下所示:A.day1 A.qty B.day1 B.qty

我尝试了一个完整的外连接,但每天总计加倍。

1 个答案:

答案 0 :(得分:0)

假设我理解了你想要的东西,那么你就是使用Full join:

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

我已经重命名了一些列名(日期不是一个好名字,因为它是保留的)

此外,您的DBMS未指定。以上是SQL Server。如果您使用的是MySQL,则需要将ISNULL替换为IFNULL