SQL Server 2000 环境数据库中有两个表,A表和B表。A表中aID是主键,不同的aID表示不同的实体。
B表中bID、Rtime是主键,bID是外键,引用的是aID。其中Rtime是datetime类型的日期。
也就是说A表是某实体的固定属性,而B表是某实体的不同时间的属性。
现在要查询B表,要求显示每个不同的A实体的最新时间下的状态。
请问各位,这个SQL语句应该如何写?
急用,不胜感激!

解决方案 »

  1.   

    SELECT
        *
    FROM A 
       JOIN B ON A.aID=B.bID
    WHERE NOT EXISTS(SELECT * FROM B AS C WHERE B.bID=C.bID AND C.RTime>B.RTime)
      

  2.   

    select bID,Rtime from A,(select bid,max(Rtime) from b where aid=bid and Rtime>=Rtime group by bID) m
      

  3.   

    select *
    from
       (select a.aid,b.Rtime from A join B on a.aid=b.bid ) t 
    where not exists(select 1 from B where bid=t.aid and rtime>t.rtime)
      

  4.   

    select a.aid , max(b.rtime) rtime
    from a, b
    where a.aid = b.bid
    group by a.aid--如果B表不止这两个字段
    select a.*, m.* from a ,
    (select t.* from b t where Rtime = (select max(Rtime) from b where bid = t.bid)) m
    where a.aid = b.bid
      

  5.   

    SELECT
        *
    FROM A 
       JOIN B ON A.aID=B.bID
    WHERE NOT EXISTS(SELECT * FROM B AS C WHERE B.bID=C.bID AND C.RTime>B.RTime)