1か月間に製品の合計売上を計算しようとしていますが、売上がない空の月を含めたいと思います。最新の12ヶ月。SQL Server:空の月を含む月間総売上高を計算
これまでのコードです。
declare
@ProductNo int
set @ProductNo = 1234
SELECT
YEAR(o.OrderDate) as 'Year', MONTH(o.OrderDate) as 'Month', sum(Amount) as 'Units sold',[ProductNo]
FROM [OrderLine] ol
inner join [Order] o on ol.OrderNo = o.OrderNo
where ProductNo = @ProductNo
Group by ProductNo, YEAR(o.OrderDate), Month(o.OrderDate)
Order by ProductNo, YEAR(o.OrderDate), Month(o.OrderDate)
これは
Year Month Units sold
2011 6 2
2011 10 1
2011 11 1
2012 2 1
を返します。しかし、私はそれを返すようにしたいと思います。
Year Month Units sold
2011 4 0
2011 5 0
2011 6 2
2011 7 0
2011 8 0
2011 9 0
2011 10 1
2011 11 1
2011 12 0
2012 1 0
2012 2 2
2012 3 0
私は私はあなたがカレンダーのテーブルを持っていることを知っている前に、私がやったSQL Server 2008のR2 SP1
が重複する可能性:http://stackoverflow.com/questions/9691824/handling-non-existent-values-in-sql-query-expression-for-ssrs- chart/9692399#9692399 –
本当に月を保持するために余分なテーブルを作成するのは嫌いです。 – gulbaek
あなたができることは、与えられた開始日と終了日の月のテーブルを返すテーブル値関数を作成することです。 MIN(OrderDate)とMAX(OrderDate)をそれぞれ使用できます。私たちは、私たちの環境で同様のものを使用します。 – tobias86