我在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。
任何人都可以帮助解决这个问题! 在此先感谢
答案 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