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请高人多多指教。小弟不胜感激。
现在关联出来的记录可能是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请高人多多指教。小弟不胜感激。
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
但是小弟在写SQL文的时候没能写出来。
请问如何实现以a_id分组取time max如果用GROUP BY a_id 的时候。我的SELECT必须只能SELECT一个a_id字段。
我所知道的是这样的!!!
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
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
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
的时候。要加上表名row_number() over(partition by a.a_id order by c.c_time) rd