SQL按照日期分組查詢
阿新 • • 發佈:2019-01-26
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