私はしないでください(メインカテゴリ年2016集約(または所望の結果のための他のソリューション)後に特定のデータを抽出
のために特定の「main_category」の合計「販売」を選択します私が登場する他のすべての「main_categories」(つまり、任意の販売を持っていない)と特定の「メインカテゴリ」の「売上高」を選択するために管理している
)その年の売上高がゼロとして表示されます持っています以下のクエリを使用してゼロとして返します。
SELECT
mc.name,
ISNULL(SUM(s.no_of_units * b.unit_price),0) AS tCatSales
FROM Sales s
INNER JOIN Invoice i ON i.invoice_ID = s.invoice_id
INNER JOIN Inventory inv ON inv.inventory_ID = s.inventory_ID
INNER JOIN Batch b ON b.batch_ID = inv.batch_ID
INNER JOIN Products p ON p.product_id = b.product_ID
INNER JOIN Category c ON c.category_ID = p.category_id
RIGHT JOIN Main_Category mc ON mc.cat_id = c.main_category
--WHERE YEAR(i.trans_date) = 2016
GROUP BY mc.name
--HAVING YEAR(i.trans_date)=2016
が、私はさらに句またはが HAVING句のいずれかによって年間2016用ONLYを、それを分離しようとすると、それは年にゼロ販売を持っている「main_category」の名前を示す停止します。と INNER JOIN Invoice i ON i.invoice_ID = s.invoice_id
:私は考えることができる
ことの一つは、ラインを交換
、私だけのようなものを実行していたことを試みた2016 からクエリの請求書を与えることです:が表示CAをした INNER JOIN Invoice i ON i.invoice_ID IN (SELECT invoice_id FROM Invoice in2 WHERE Year(in2.trans_date)=2016)
ゼロ値で計算されたが、計算された販売金額は(2069から何か203151022.75まで)である。
私はこの追加が幾分非合理的であり、インナー結合全体を混乱させることを理解していますが、これは私が思う、またはウェブ上で見つけることができる最も近いものです。
私は望ましい結果があるREPEAT:その年の売上高は年間与えられた年/月/日とゼロとして表示されますがありません主なカテゴリを
クエリをポストして、他の人がそれを解決することを期待することは起こりそうにありません。ここで本当に役立つ情報が必要です。これは始めるのに最適な場所です。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ Where句をそのまま使用すると、クエリロジック全体が変更されます一致する行のみを返します。私は全体のクエリを開始し、あなたのベーステーブルとしてMain_Categoryを使用します。その後、他のすべてのものを結合します。右の結合は経験豊富な人でさえ混乱させますが、他の人にとってはまったく混乱します。 –
なぜ右に参加するのですか? – Eli