SQL按月分组,没有月份的数据如何显示为0?

2024-11-28 17:01:13
推荐回答(3个)
回答1:

SELECT ROWNUM AS RN FROM DUAL CONNECT BY ROWNUM <= 12

以上是oracle的写法。sql server可以用row_number() over(order by XXX)也可实现。

可以用上述虚拟列出的表格数据,与你的语句进行左连接,NVL空值设置为0即可。

你的WHERE语句没有问题。如果要用GROUP BY优化的话,可能需要用到复杂的数据库分析函数,这些分析函数用起来也比较费劲啊。。。

回答2:

最简单的做法:外关系一个全年月份维度表

回答3:

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