SQL是这样的,有三个表关联,A,B,C。
现在关联出来的记录可能是A表中的ID会出现两条记录:
比如表结构为:A(a_id)B(a_id,c_id)C(c_id,c_time)A表中:a_id       
1
2
B表中:a_id         c_id
1            1 
1            2
2            3
2            4
C表中:c_id         c_time
1            2009/02/01
2            2009/03/01
3            2009/04/01
4            2009/05/01这个时候三个表关联出来的记录会出现:
a_id         c_id          c_time
1            1             2009/02/01
1            2             2009/03/01
2            3             2009/04/01
2            4             2009/05/01现在的问题是。同样的A表中的a_id。我只想关联出C表中c_time时间离现在最近的那一条,也就是下面的结果:
a_id         c_id          c_time
1            2             2009/03/01
2            4             2009/05/01请高人多多指教。小弟不胜感激。

解决方案 »

  1.   

    select tt.id, tt.ctime from (
    select a.id, c.ctime, row_number() over(partition by a_id order by c.c_time) rd from a, b, c
    where a.a_id = b.a_id and b.c_id= c.c_id) tt and tt.rd =1
      

  2.   

    SQL文有语法错误。俺没能执行过去啊
      

  3.   

    以a_id  分组取 time max
      

  4.   

    楼上好像说到了点上。
    但是小弟在写SQL文的时候没能写出来。
    请问如何实现以a_id分组取time max如果用GROUP BY a_id 的时候。我的SELECT必须只能SELECT一个a_id字段。
    我所知道的是这样的!!!
      

  5.   

    1楼的应该可以啊,只是排序应该改下
    select tt.a_id, tt.c_time from ( 
    select a.a_id, c.c_time, row_number() over(partition by a_id order by c_time desc) rd from a, b, c 
    where a.a_id = b.a_id and b.c_id= c.c_id) tt and tt.rd =1
      

  6.   

    a_id        c_id 
    1            1 
    1            2 
    2            3 
    2            4 select d.a_id,d.c_id,c.c_time
    from c,
    (select a_id,c_id,row_number over(partition by a_id order by c_id desc) rn
    from b)  d
    where c.c_id=d.c_id and d.rn=1
      

  7.   

    SELECT TT.A_ID,
           TT.C_TIME
      FROM (SELECT A.A_ID,
                   C.C_TIME,
                   ROW_NUMBER() OVER(PARTITION BY A_ID ORDER BY C_TIME DESC) RD
              FROM A,
                   B,
                   C
             WHERE A.A_ID = B.A_ID
               AND B.C_ID = C.C_ID) TT
     WHERE TT.RD = 1
      

  8.   

    row_number over(partition by a_id order by c_id desc) rn 请问这个东东在哪个数据库里可行我在ORACLE 10G中。不能运行。谢谢
      

  9.   

    多谢各位。一楼正解。只是在row_number() over(partition by a_id order by c.c_time) rd 
    的时候。要加上表名row_number() over(partition by a.a_id order by c.c_time) rd