1

我在 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

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

前任。猜想上面的查询没有一月的条目。那么它应该将数量显示为 0。

谁能帮忙解决这个问题!!!提前致谢

4

2 回答 2

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;
于 2013-03-25T07:38:55.313 回答
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
于 2013-03-25T07:39:14.853 回答