以下查询返回销售月份的值,但不返回销售值为零的月份的值:
SELECT DATE_FORMAT(O.OrderDate, "%b, %Y") AS MonthYear, SUM(O.Total * C.Rate) AS Sales FROM (Orders O INNER JOIN OrdersStates OS ON O.OrderID = OS.OrderID) INNER JOIN Users U ON U.UserID = O.UserID INNER JOIN UsersDescription UD ON U.UserID = UD.UserID INNER JOIN States S ON S.StateID = OS.StateID INNER JOIN Currencies C ON O.Currency = C.Abb WHERE O.OrderDate >= '2009-10-01 00:00:00' AND O.OrderDate < '2010-04-19 23:59:59' GROUP BY MonthYear ORDER BY MonthYear
目标是在没有销售的月份中使其返回零值。谁能看到丢失的内容吗?
先感谢您,
奥维尔
尽管并非不可能,但在SQL中做到这一点并不容易。
由于这主要是一个演示问题,因此通过遍历结果并检查缺失的月份来执行问题中的查询后,可能会更容易在客户端中添加缺失的行。