1

重複の可能性:
SQL でゼロ値の月を表示する

特定の属性について、空の場合でもその行を表示することは可能ですか?

attribute があるとしますdate_of_car_sale。また、月次レポートを作成したいとします。

2009 年の 1 月から 12 月までの 2 か月は、会社が休暇で不在だったのでdate_of_car_sale、6 月と 8 月はありません。

6 月と 8 月にデータ値がない場合でも、2009 年のすべての月を表示するレポートを作成することはできますか?

毎月表示し、それらをグループ化して個々の月のみを表示することができます。しかし、6 月と 8 月は空であるため、表示できないようです。

PS: これには、Company テーブルの列が 1 つだけ必要です。

4

1 に答える 1

2

このような場合、私は通常、表示したいすべての値を含むテーブルを作成し、データ セットに左結合を行います。したがって、あなたの場合、月の最初の日を格納する単一の日付列、または最初と最後の日を含む2つの列を持つ「月」というテーブルを作成し、次のように結合します。

SELECT m.month_first, COUNT(x.date_of_car_sale) as sales
FROM months m
LEFT JOIN (
  SELECT date_of_car_sale
  FROM sales
) x ON m.month_first <= x.date_of_car_sale 
    AND m.month_last >= x.date_of_car_sale
GROUP BY m.month_first
ORDER BY m.month_first
于 2012-12-04T14:53:10.140 に答える