我有点难住,我可能会去做这件事。返回所有月份和年份之间的日期范围 - 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