A表:
  aid    int 主键
  bb     intB表:
  bid    int 主键
  aid
  cc要求取出
  aid ,bid,cc,bb1(最后一条),bb2(倒数第二条),bb2-bb1
就是要求一条记录中包含bb的最后两条记录,并最后作两条之差
请问如何完成?可以用存储过程写

解决方案 »

  1.   

    ;with f as
    (
    select
     a.aid,a.bb,b.bid,b.cc
    from
     a,
    (select id=row_number()over(order by a.bid desc),* from b)b,
    where
     a.aid=b.aid
     )
    select 
      aid,bid,cc,
      bb1=(select bb from f where id=1),
      bb2=(select bb from f where id=2),
      [bb2-bb1]= (select bb from f where id=1)-(select bb from f where id=2)
    from 
      f
      

  2.   

    实际表结构和数据都比较大,比较难发其实就是在A表中有0-N条在B表中对应的记录
    B表中的记录都是唯一的
    就是1对N
    然后连接两个表取出这样的记录aid   ,bid,cc,bb1(最后一条),bb2(倒数第二条),bb2-bb1 
    这其中的bb是取最大的两个值,不能指定,因为它可能为NULL
    就是取出每条bid对应的最后两条A表中的BB记录放在一条中,其他多余的就不要了