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

問題は、特定の月のエントリがない場合、そのエントリにカウントをゼロとして表示する必要があることですが、現在は何も表示されていません。

元。上記のクエリの 1 月のエントリはないと思います。その場合、数量は 0 として表示されます。

誰でもこの問題を解決できますか!!! 前もって感謝します

4

2 に答える 2

2

これを行う 1 つの方法は、月名のリストを含む一時テーブルを作成し、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 に答える