22,210
社区成员
发帖
与我相关
我的任务
分享
select a.* from tb a,tb b where a.part=b.part and datediff(dd.a.date,b.date)=1
union all
select b.* from tb a,tb b where a.part=b.part and datediff(dd.a.date,b.date)=1
declare @t table (no int,part varchar(2),date datetime)
insert into @t
select 1,'AA','2011-03-15' union all
select 2,'AA','2011-03-16' union all
select 3,'bb','2011-03-15' union all
select 4,'bb','2011-03-17' union ALL
select 5,'bb','2011-03-18' union ALL -- 我添加的数据,方便测试
select 6,'AA','2011-03-18'
;WITH maco AS(
SELECT a.NO AS ano,a.part AS apart,a.date AS adate,
b.NO AS bno,b.part AS bpart,b.date AS bdate FROM @t a
LEFT JOIN @t b
ON a.part=b.part AND a.date=b.date-1)
SELECT ano,apart,adate FROM maco WHERE bno IS NOT NULL
UNION ALL
SELECT bno,bpart,bdate FROM maco WHERE bno IS NOT NULL
ORDER BY adate
/*
1 AA 2011-03-15 00:00:00.000
2 AA 2011-03-16 00:00:00.000
4 bb 2011-03-17 00:00:00.000
5 bb 2011-03-18 00:00:00.000
*/
selec * from tb a
where exists(select 1 from tb where (no=a.no+1 and datediff(date,a.date)=1)
or(no=a.no-1 and datediff(date,a.date)=-1))
select t1.*,t2.date from t t1 inner join t t2
on t1.part = t2.part and t1.date = dateadd(d,-1,t2.date)
select
a.*
from
tb a,tb b
where
a.part=b.part
and
datediff(dd.a.date,b.date)=1
declare @date datetime
set @date = '2011-03-16' --查询起始日期
select *
from tb
where date between @date and dateadd(dd,2,@date)