3

販売された製品、顧客、購入日、および販売されたユニットの概要に関する情報を含むテーブルがあります。

私が取得しようとしている結果は、最初の 3 つは 1 月、2 月、3 月の 4 行である必要があります。最後の行は、この 3 か月間に販売されなかった製品です。

これがテーブルです。http://imageshack.us/a/img823/8731/fmlxv.jpg

表の列は次のとおりです。

id
sale_id
product_id
quantity
customer_id
payment_method_id
total_price
date
time

したがって、結果の最初の 3 行は次のようになります。

  • 1 月、1 月の SUM
  • 2 月、2 月の SUM
  • 3 月、3 月の SUM と次の行は 4 月のはずですが、4 月にはまだ項目がないため、これらすべてについてどうすればよいかわかりません。

編集者注: リンクされた画像に基づくと、上の列は 2013 年のものになります。

4

3 に答える 3

1

この回答は、質問のこの部分の私の解釈に基づいています。

3 月、3 月の SUM と次の行は 4 月のはずですが、4 月にはまだ項目がないため、これらすべてについてどうすればよいかわかりません。

1 年 (たとえば 2013 年) のすべての月を取得しようとしている場合は、売上がゼロの月のプレースホルダーが必要です。これは、売上がない場合でも、2013 年のすべての月を一覧表示します。

SELECT m.monthnum, SUM(mytable.totalprice)
FROM (
  SELECT 1 AS monthnum, 'Jan' as monthname
  UNION SELECT  2, 'Feb'
  UNION SELECT  3, 'Mar'
  UNION SELECT  4, 'Apr'
  UNION SELECT  5, 'May'
  UNION SELECT  6, 'Jun'
  UNION SELECT  7, 'Jul'
  UNION SELECT  8, 'Aug'
  UNION SELECT  9, 'Sep'
  UNION SELECT 10, 'Oct'
  UNION SELECT 11, 'Nov'
  UNION SELECT 12, 'Dec') m
LEFT JOIN my_table ON m.monthnum = MONTH(mytable.date)
WHERE YEAR(mytable.date) = 2013
GROUP BY m.monthnum
ORDER BY m.monthnum
于 2013-05-15T15:10:38.253 に答える