a   b           c
1  2001-1-1     0
1  2001-1-2     1  
2  2001-1-3     2
2  2001-1-4     2
2  2001-1-5     2
2  2001-1-6     2
2  2001-1-7     2查询 日期最接近当前日期前2个数据行中a=1的数量
如c

解决方案 »

  1.   


    select top 2  -- 前2个数据行
        * 
    from tb
    where a=1 -- a=1的数量
    order by abs(datediff(day, b, getdate())) -- 最接近当前日期
      

  2.   

    select top 2 *
    from tablename
    order by abs(datediff(hour, b, getdate()))
      

  3.   

    select top 2 * from tb
       where b<'2001-1-5' and a=1
       order by b desc
      

  4.   

    如更新到2001-1-5这行时就是最接近2001-1-5日期的前二行
    -------------------------------------------------这个前二行指的是:
    (1)在 2001-1-5 这行前面的两行
    还是
    (2)在b最接近 2001-1-5 的所有记录中最前两行?如果是前者就是我上面写的,
    如果是后者,那就是楼上那几位写的,将 GETDATE()换成 '2001-1-5' 即可。
      

  5.   

    select count(*) from tb inner join (select top 2 [id] from tb order by b desc) aaa on tb.[id]=aaa.[id] where a=1
      

  6.   

    bszd6zsl=(select count(bsid) from bs inner join (select top 6 bsid from bs bs.js > '0' and b.bstime > bs.bstime and b.zdid=bs.zdid and b.sj = bs.sj and b.bs = bs.bs order by bstime desc) aaa on bs.bsid = aaa.bsid)  不知道错在哪..
      

  7.   

    bszd6zsl=(select count(bsid) from bs where bsid in(select top 6 bsid from bs where b.bstime > bstime and b.zdid=zdid and b.sj = sj and b.bs = bs order by bstime desc) and js >'0') 搞定了是这样的
    谢谢大家了..来者有分...