create table pooling(a datetime,b varchar(10),c int)insert into pooling values('20060224','n01',33)
insert into pooling values('20060225','n01',32)
insert into pooling values('20060227','n01',45)
insert into pooling values('20060227','n02',45)
-----
select a.a,b.a ,a.b ,(case when a.a=b.a then a.c+b.c when a.a<>b.a then a.c end)
from pooling a,pooling b
where  (a.b=b.b and (a.a<b.a and datediff(dd,a.a,b.a)=1 )) or(a.b=b.b and a.a=b.a and dateadd(dd,1,a.a) not in (select c.a from pooling c) and dateadd(dd,-1,a.a) not in (select d.a from pooling d)   )

解决方案 »

  1.   

    sorry 写错了一点 ,下面的显示正常。太困了,语法有点累赘,明天再重写下。
    create table pooling(a datetime,b varchar(10),c int)
    insert into pooling values('20060224','n01',33)
    insert into pooling values('20060225','n01',32)
    insert into pooling values('20060227','n01',45)
    insert into pooling values('20060227','n02',45)
    -----
    select a.a,b.a ,a.b ,(case when a.a<>b.a then a.c+b.c when a.a=b.a then a.c end)
    from pooling a,pooling b
    where  (a.b=b.b and (a.a<b.a and datediff(dd,a.a,b.a)=1 )) or(a.b=b.b and a.a=b.a and dateadd(dd,1,a.a) not in (select c.a from pooling c) and dateadd(dd,-1,a.a) not in (select d.a from pooling d)   )结果:                                                   a                                                      b                      
    ------------------------------------------------------ ------------------------------------------------------ ---------- ----------- 
    2006-02-24 00:00:00.000                                2006-02-25 00:00:00.000                                n01        65
    2006-02-27 00:00:00.000                                2006-02-27 00:00:00.000                                n01        45
    2006-02-27 00:00:00.000                                2006-02-27 00:00:00.000                                n02        45