一尘不染

使用SQL显示零值月份

sql

以下查询返回销售月份的值,但不返回销售值为零的月份的值:

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

目标是在没有销售的月份中使其返回零值。谁能看到丢失的内容吗?

先感谢您,

奥维尔


阅读 242

收藏
2021-05-05

共1个答案

一尘不染

尽管并非不可能,但在SQL中做到这一点并不容易。

由于这主要是一个演示问题,因此通过遍历结果并检查缺失的月份来执行问题中的查询后,可能会更容易在客户端中添加缺失的行。

2021-05-05