查询显示零,特定月份的条目总和为0

时间:2013-03-25 07:36:17

标签: sql sqlite

我在sqlite查询中很狡猾。

我在sqlite数据库中有一组条目。我想找到总和,按月分组。

SELECT SUM(QUANTITY) quantity, strftime('%m', CREATED_ON) month FROM OrderItemBIT  WHERE (strftime('%Y%m',CREATED_ON) BETWEEN '201210' AND '201303') group by month

问题是如果特定月份没有条目,我希望该条目应显示为零,但现在它没有显示任何内容。

实施例。猜猜上个月的查询没有1月份的条目。那么它应该将数量显示为0。

任何人都可以帮助解决这个问题! 在此先感谢

2 个答案:

答案 0 :(得分:2)

执行此操作的一种方法是创建一个临时表,其中包含月份名称列表,然后使用您的表格JOIN。或者你可以动态创建它;类似的东西:

SELECT
  m.MonthName,
  IFNULL(SUM(o.QUANTITY), 0) quantity 
FROM
(
  SELECT 'January' AS MonthName
  UNION ALL
  SELECT 'March'
  UNION ALL
  ...
) AS Months
LEFT JOIN OrderItemBIT AS o ON o.month = strftime('%m', o.CREATED_ON)
WHERE (strftime('%Y%m', o.CREATED_ON) BETWEEN '201210' AND '201303')
group by m.MonthName;

答案 1 :(得分:0)

  SELECT SUM(COALESCE(QUANTITY, 0))
         , strftime('%m', CREATED_ON) month
    FROM OrderItemBIT
   WHERE (strftime('%Y%m',CREATED_ON) BETWEEN '201210' AND '201303')
GROUP BY month