SELECT ROWNUM AS RN FROM DUAL CONNECT BY ROWNUM <= 12
以上是oracle的写法。sql server可以用row_number() over(order by XXX)也可实现。
可以用上述虚拟列出的表格数据,与你的语句进行左连接,NVL空值设置为0即可。
你的WHERE语句没有问题。如果要用GROUP BY优化的话,可能需要用到复杂的数据库分析函数,这些分析函数用起来也比较费劲啊。。。
最简单的做法:外关系一个全年月份维度表
create table #tt(Mon varchar(2),plan int,temp int)
declare @Month int
set @month=1
while @month<13
begin
declare @plan int,@temp int
select @plan=plan,@temp=temp from TT where mon=@month--这里注意要修改为02等字符串
if(@plan is null) set @plan=0
if(@temp is null) set @temp=0
insert into #tt values (@month,@plan,@temp)
set @month=@month+1
end
select *from #tt