一部の販売情報を分析しようとしていますが、SQLクエリが機能しません。私はまだSQLを正しく使う方法を学ぶので、私はたぶん標準的な解決策を見ていないでしょう。月間売上を強制的に修正する正しい方法
私はデータベース内のすべての記事のリストを希望し、それぞれの月の売上を表示します。販売されていない月は0でリストされます。
Iは、一つのテーブルで販売されている実際の商品別のおよび第3のテーブルで注文情報を物品情報を格納しています。
私の問題は今、何とか空になっているように見えて、私はフィルターを取り出せません。 さらに、日付を持つ他のテーブルを参照すると、既存の値/行に結合するのではなく、日付値が "mulitply"になります(reportMonthの各月に12行が残されます)。
これは私のコードです:
//* list of months */
WITH dates(reportMonth) as (
select 1 union all select 2 union all
select 3 union all select 4 union all
select 5 union all select 6 union all
select 7 union all select 8 union all
select 9 union all select 10 union all
select 11 union all select 12
)
SELECT article.articleno AS 'article_no'
, month(beleg.orderdate)
, dates.reportMonth
, ISNULL(sum(orders_pos.amount), 0)
AS 'VK_amount'
FROM article
CROSS JOIN dates
LEFT JOIN orders_pos ON article.articleno = orders_pos.articleno
LEFT JOIN orders ON orders_pos.beleg_id = orders.id
AND ISNULL(month(orders.orderdate), 0) != 0
AND month(orders.orderdate) = dates.reportMonth
GROUP BY article.artikelnr
, month(orders.orderdate)
, dates.reportMonth
これはこれは私が
article_no month(beleg.orderdate) reportMonth VK_amount
Produkt_A 1 1
Produkt_A 2 0
Produkt_A 3 0
Produkt_A 4 4 1
Produkt_A 5 5 2
Produkt_A 6 0
Produkt_A 7 7 3
Produkt_A 8 8 2
Produkt_A 9 0
Produkt_A 10 10 2
Produkt_A 11 0
Produkt_A 12 0
誰かがここに助けるかもしれないという考えを持っていますが必要になるかである現在の出力
article_no month(beleg.orderdate) reportMonth VK_amount
Produkt_A 1 5
Produkt_A 2 9
Produkt_A 3 7
Produkt_A 4 5
Produkt_A 5 5
Produkt_A 6 7
Produkt_A 7 5
Produkt_A 8 7
Produkt_A 9 7
Produkt_A 10 6
Produkt_A 11 7
Produkt_A 12 7
Produkt_A 1 1 1
Produkt_A 4 4 1
Produkt_A 5 5 2
Produkt_A 7 7 3
Produkt_A 8 8 2
です? 私の事件を理解するためにさらに詳しい情報が必要な場合は、私にお知らせください。
あなたの答えはありがとう。 'GROUP BY'では、実際にはこの例をまとめることができませんでした。私は私のテキストでこれを編集しました。 WHERE文で特定の日付範囲を選択するので、ここでは年の条件は必要ありませんが、この例では必要ありません。 – Mirakelwhip