1. 按照天统计分组
--按照天统计3
select b.data_time,isnull(a.val,0) as val
from (
select convert(varchar(10),dateadd(DAY,number,'2018-08-01'),120) as data_time
from master..spt_values where datediff(DAY,dateadd(day,number,'2018-08-01'), '2018-08-05')>0 and number>=0 and type='p') b
left join
( select convert(nvarchar(10),data_time,120) as data_time,ISNULL(avg(val),0.0) as val from tableName where data_time >='2018-08-01' and data_time < '2018-08-05' group by convert(nvarchar(10),data_time,120)
) as a on a.data_time=b.data_time;
2.按照月统计分组
--按照月统计
select b.data_time,isnull(a.val,0) as val
from(
select convert(varchar(10),dateadd(MONTH,number,'2018-08-01'),120) as data_time
from
master..spt_values
where
datediff(MONTH,dateadd(MONTH,number,'2018-08-01'), '2018-11-01')>0
and number>=0
and type='p') b
left join
( select datename(year,data_time)+ '-' + datename(MONTH,data_time)+'-01' as data_time ,ISNULL(avg(val),0.0) as val from tableName
where data_time >='2018-08-01' and data_time < '2018-11-01'
group by datename(year,data_time)+ '-' + datename(MONTH,data_time)+'-01'
) as a on a.data_time=b.data_time;
3.按照年统计分组
--按照年统计
select b.data_time,isnull(a.val,0) as val
from(
select convert(varchar(10),dateadd(year,number,'2017-01-01'),120) as data_time
from master..spt_values
where datediff(year,dateadd(year,number,'2017-01-01'), '2019-01-01')>0
and number>=0
and type='p') b
left join
( select datename(year,data_time)+ '-01-01' as data_time ,ISNULL(avg(val),0.0) as val from tableName where data_time >='2017-01-01' and data_time < '2019-01-01'
group by datename(year,data_time)+ '-01-01'
) as a on a.data_time=b.data_time