欢迎投稿

今日深度:

sql日期补全,sql补全

sql日期补全,sql补全


</pre><pre name="code" class="sql">IF OBJECT_ID('TBL')IS NOT NULL
DROP TABLE TBL
GO
CREATE TABLE TBL(
日期 DATE
)
GO
INSERT TBL
SELECT '2014-09-30' UNION ALL
SELECT '2014-10-06'

go
DECLARE @DATE DATE
SELECT @DATE=MAX(日期) FROM TBL
;WITH T
AS(
SELECT * FROM TBL
UNION ALL
SELECT DATEADD(DD,1,A.日期) FROM T A
WHERE NOT EXISTS(SELECT * FROM TBL B
WHERE B.日期=DATEADD(DD,1,A.日期)
)
AND A.日期<@DATE
)
SELECT *FROM T ORDER BY 日期



sql server 怎用一条select语句查出表中一段时间每天的某数据之与 (并且补全缺少的日期)主要

select COUNT(*),convert(date,max(日期))
from 表 group by convert(date,日期)
union all
select * from
(select 0 co,convert(varchar(10),dateadd(dd,number,convert(varchar(8),getdate(),120)+'01'),120) as dt
from master..spt_values
where type='P'
and dateadd(dd,number,convert(varchar(8),getdate(),120)+'01')<=dateadd(dd,-1,convert(varchar(8),dateadd(mm,1,getdate()),120)+'01')) c
where dt not in (select convert(date,max(日期)) from 表 group by convert(date,日期) )
将表和日期改为相应的表明和日期列名即可
 

对于一个sql查询完,补全日期需要帮助

根据你的数据,给你个例子,其中的数据类型不一定和你的完全一样,需要你自己根据你的实际情况去调整:
--创建表--create table [table](dtime datetime, data varchar(10), num smallint)--添加测试数据--insert into [table] select '2002-9-8' ,'data1',0--insert into [table] select '2002-9-10' ,'data1',3--insert into [table] select '2002-9-11' ,'data1',4--测试语句select * from [table]--你需要的效果declare @d table(time datetime)declare @date datetimeset @date='2002-09-07'while @date<='2002-09-12' begin insert @d select @date set @date= dateadd(dd,1,cast(@date as datetime)) endselect convert(varchar(10),time,120) as time, isnull(data, 'data1') as data,isnull(num, 0) as numfrom @d d left join [table] ton convert(varchar(10),dtime,120) = convert(varchar(10),time,120)最终结果:

具体还有什么其他想法,可以参考我的博客:
blog.sina.com.cn/s/blog_9f39f0c70102ux87.html
里面的第五点,标题是"5、按月统计查询"


 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3412.html NewsArticle sql日期补全,sql补全 /prepre name=code class=sqlIF OBJECT_ID(TBL)IS NOT NULLDROP TABLE TBLGOCREATE TABLE TBL(日期 DATE)GOINSERT TBLSELECT 2014-09-30 UNION ALLSELECT 2014-10-06goDECLARE @DATE DATESELECT @DATE=MAX(日期) FROM TBL;WI...
相关文章
    暂无相关文章
评论暂时关闭