私のクエリには問題があります。 2 つのテーブルがあり、それらを結合して最初のテーブルの主キーに基づいた結果を取得したいのですが、最初のテーブルのデータが 1 つ欠落しています。
これは私のヴァイオリンです
ご覧のとおり、月 1 の「xx3」が欠落しています
左右の接続を変えてみましたが結果は同じでした。 ご覧のとおり、coalesce(sum(b.sd_qty),0) を合計に設定する必要があります。qty がない場合は、0 はデフォルト値です。
coalesce(sum(b.sd_qty),0) を合計に設定する必要があります。
がない場合は、
はデフォルト値です。
テーブルを異なる日付に相互結合する必要もあります:
SELECT a.item_code, COALESCE(SUM(b.sd_qty), 0) 合計, DATE_FORMAT(d.sd_date, '%m-%Y') month_year 項目aから クロス結合 ( SELECT DISTINCT sd_date 販売詳細から WHERE sd_date >= '2020-04-01' - 間隔 3 か月および sd_date あるいは、MySql 8.0 の場合は、再帰的 CTE を使用して、結果が必要なすべての月の開始日を返します。これをテーブルに相互結合できます。 WITH RECURSIVE 日付 AS ( '2020-04-01' を選択 - sd_date として 3 か月間隔 すべてを結合する sd_date 間隔 1 か月を選択 FROMの日付 WHERE sd_date 間隔 1 か月 表示デモ。
あるいは、MySql 8.0 の場合は、再帰的 CTE を使用して、結果が必要なすべての月の開始日を返します。これをテーブルに相互結合できます。
WITH RECURSIVE 日付 AS ( '2020-04-01' を選択 - sd_date として 3 か月間隔 すべてを結合する sd_date 間隔 1 か月を選択 FROMの日付 WHERE sd_date 間隔 1 か月 表示デモ。
表示デモ。
テーブルを異なる日付に相互結合する必要もあります: