Re: [SQL ] 算出每笔日期间隔

楼主: bbscaca (Cyber Cowboy)   2014-07-10 11:47:01
你的过滤条件就是获取两个日期差为1天的两条记录的时期差.
而后面的数据日期查超过1天,肯定不会有结果.
这类的数据查询在光标里处置会更加合理,只是逐条获取数据并和前一条比对日期差即可.
※ 引述《Severine (赛非茵)》之铭言:
: DB: MS SQL
: 估狗了很久 刚刚也在本版搜寻了一下类似问题 找不太到..
: 只好发文问一下!
: 我想要取得每笔纪录的时间间隔 请问该怎么做呢?
: =========================================================
: 问完以后改写了一个blueshop的范例
: DECLARE @Temp table (Date datetime, Orders int)
: INSERT INTO @Temp VALUES ('2012/2/1',1000)
: INSERT INTO @Temp VALUES ('2012/2/2',800)
: INSERT INTO @Temp VALUES ('2012/2/3',3500)
: INSERT INTO @Temp VALUES ('2012/2/4',4000)
: SELECT
: T1.Date ,
: ISNULL(datediff(day,T2.Date ,T1.Date),null) AS daydiff
: FROM @Temp AS T1
: LEFT JOIN @Temp AS T2 ON T1.Date = DATEADD(d,1,T2.Date)
: ===============以上可以算出后四笔的相差时间==============
: 但是以下就不行,想必是对left join用法的理解错误
: DECLARE @Temp table (Date datetime, Orders int)
: INSERT INTO @Temp VALUES ('2012/2/1',1000)
: INSERT INTO @Temp VALUES ('2012/2/12',800) <=修改过
: INSERT INTO @Temp VALUES ('2012/2/13',3500) <=
: INSERT INTO @Temp VALUES ('2012/2/24',4000) <=
: SELECT
: T1.Date ,
: ISNULL(datediff(day,T2.Date ,T1.Date),null) AS daydiff
: FROM @Temp AS T1
: LEFT JOIN @Temp AS T2 ON T1.Date = DATEADD(d,1,T2.Date)
: ========================================================
: 请问该如何修改呢? 谢谢 ><
作者: Severine (赛非茵)   2014-07-12 21:26:00
已经依照原本那篇底下推文的方法实做出来了 :)

Links booklink

Contact Us: admin [ a t ] ucptt.com