当前位置: 首页 > 面试题库 >

使用SQL显示零值月份

终睿
2023-03-14
问题内容

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

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中做到这一点并不容易。

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



 类似资料:
  • 问题内容: 我正在使用DecimalFormat将双精度格式设置为2个小数位,如下所示: 它可以工作,但是如果我有一个像20这样的数字,它就给我这个: 我想要这个: 有什么建议? 问题答案: DecimalFormat类用于将十进制数字值转换为String。在您的示例中,您将使用来自format()方法的String并将其放回double变量中。如果然后输出该double变量,则不会看到格式化的字

  • 问题内容: 我有以下代码: 我想知道如何使浏览器显示0,然后1,然后2,… 在我的示例中,它会加载一段时间,然后显示0-29。 问题答案: 禁用所有输出缓冲并填充输出: 另外,如果您的Apache正在使用,并且文件具有gzip-compression ,则此方法将无效。

  • 问题内容: 我正在使用Firebird数据库,正在尝试以下sql,但每次它返回0而不是0.61538(等等)。 现在,当我删除/ 26时,totalcount会返回16。但是,当我将26除后,结果显示为0,但应显示为完整的十进制值0.615384 …有人知道为什么它不返回完整值吗?我什至尝试将其包装在CAST((count(myfield)/ 26)中为double)totalcount,但它仍返

  • 我正在尝试使用JDatePicker来显示日历。然而,我只想显示月份和年份,而不是日期。 我试着四处寻找模型和JDatePickerImpl对象,但没有运气。 以下是我必须向JDatePicker展示的代码,来自文档: 提前谢谢! 注意:这是我的意思的图像。

  • 问题内容: 我需要创建一个SSIS程序包,该程序将在 3个月以上的 时间 (基于)中浏览记录,然后将其移至另一个 我的查询是: 列的格式。例如: 当我运行查询时,它应该显示所有早于 3个月 的记录,但不会。 问题答案: 试试这个 对于天,年份请参见下面的示例。 对于Anand,查询

  • 问题内容: 我创建了以下存储过程,该过程用于计算所选位置的特定范围之间每天的记录数: 但问题是结果没有显示零记录的日子,我很确定这与我的WHERE语句有关,不允许显示零值,但我不知道该如何解决这个问题。 预先感谢尼尔 问题答案: 不是WHERE子句,而是GROUP BY。简而言之,查询将仅返回存在的行的数据。这意味着当您根据时间戳记的日期进行分组时,只会返回有行的日期。SQL Server从上下文