sqlserver查询补全时间_mssql 按日期分组(group by)查询统计的时候,没有数据补0的解决办法...
摘要:
下文講述一次報表制作的需求,
需制作一個月的銷量的數(shù)據(jù)匯總,如果其中某一天沒有數(shù)據(jù),那么就補0處理
例:
/*
統(tǒng)計2018-4月份的銷量統(tǒng)計,
無數(shù)據(jù)的天補0
*/
---建立基礎(chǔ)數(shù)據(jù)
create table saleInfo(dateInfo datetime,qty int )
go
insert into saleInfo (dateinfo,qty)values('2018-4-1',5)
insert into saleInfo (dateinfo,qty)values('2018-4-2',8)
insert into saleInfo (dateinfo,qty)values('2018-4-2',18)
insert into saleInfo (dateinfo,qty)values('2018-4-3',10)
insert into saleInfo (dateinfo,qty)values('2018-4-8',9)
insert into saleInfo (dateinfo,qty)values('2018-4-10',6)
insert into saleInfo (dateinfo,qty)values('2018-4-15',28)
insert into saleInfo (dateinfo,qty)values('2018-4-20',152)
insert into saleInfo (dateinfo,qty)values('2018-4-21',36)
insert into saleInfo (dateinfo,qty)values('2018-4-22',72)
insert into saleInfo (dateinfo,qty)values('2018-4-28',20)
insert into saleInfo (dateinfo,qty)values('2018-4-4',12)
go
--按日期匯總,但是無銷售數(shù)據(jù)的天數(shù)無法出現(xiàn)
---select convert(varchar,dateInfo,111) as d,sum(qty) as qty from saleInfo group by convert(varchar,dateInfo,111)
----采用系統(tǒng)常量表spt_values表,輔助補0操作
select convert(varchar,a.d,111) as [日期],
isnull(b.qty,0) as [銷量]
from
(
---生成4月份所有的天數(shù)
select dateadd(day,number,'2018-4-1') as d from master..spt_values
where type='p'
and number >=0
and dateadd(day,number,'2018-4-1') between '2018-4-1' and dateadd(day,-1,'2018-5-1')
) as a
left join
(
---按天匯總的銷量數(shù)據(jù)
select convert(varchar,dateInfo,111) as d,sum(qty) as qty from saleInfo group by convert(varchar,dateInfo,111)
) as b
on convert(varchar,a.d,111) = b.d
go
truncate table saleInfo
drop table saleInfo
總結(jié)
以上是生活随笔為你收集整理的sqlserver查询补全时间_mssql 按日期分组(group by)查询统计的时候,没有数据补0的解决办法...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetCode-删除排序数组中的重复项
- 下一篇: ElasticSearch映射Mappi