我有點難住,我可能會去做這件事。返回所有月份和年份之間的日期範圍 - SQL
我有一個非常基本的查詢,目前每個產品按年份和月份返回銷售。 按年/月分組,並總結數量。 這對於每次銷售的產品/年/月組合都會返回一行。
如果一個月沒有銷售,那麼就沒有數據。
我想讓我的查詢爲我的日期範圍內的每個年/月的每個產品返回一行數據,而不管是否實際上有訂單。
如果沒有訂單,那麼我可以爲該產品/年/月返回0。
以下是我的示例查詢。
Declare @DateFrom datetime, @DateTo Datetime
Set @DateFrom = '2012-01-01'
set @DateTo = '2013-12-31'
select
Convert(CHAR(4),order_header.oh_datetime,120) + '/' + Convert(CHAR(2),order_header.oh_datetime,110) As YearMonth,
variant_detail.vad_variant_code,
sum(order_line_item.oli_qty_required) as 'TotalQty'
From
variant_Detail
join order_line_item on order_line_item.oli_vad_id = variant_detail.vad_id
join order_header on order_header.oh_id = order_line_item.oli_oh_id
Where
(order_header.oh_datetime between @DateFrom and @DateTo)
Group By
Convert(CHAR(4),order_header.oh_datetime,120) + '/' + Convert(CHAR(2),order_header.oh_datetime,110),
variant_detail.vad_variant_code
我認爲你需要一個12個月的表,簡單的int列和你加入你的查詢。 – Mihai
問題是我無法改變數據庫來添加一個表來做到這一點。 – OWSam
按照Mihai的建議,但不是創建一個真正的表,而是使用一個表變量:''declare @mytable table(id int,name varchar(20))''然後將名稱插入表變量並將其加入到查詢中。 – acfrancis