PEOPLE 表; 人员表 id;
TRANSFER 表 门进记录表 p_id;
id 与p_id 对应;select pp.name,trn.time,trn.type from people pp ,
transfer trn
where pp.id=trn.p_id(+); 如何查出来 每个人的最近的 一次进出记录?张三, 十点,进门
李四, 十二点,出门上面的 语句查出啦,用重复的人员记录;张三,十点,进门
李四, 十二点,出门
张三,九点,出门;求指点;
TRANSFER 表 门进记录表 p_id;
id 与p_id 对应;select pp.name,trn.time,trn.type from people pp ,
transfer trn
where pp.id=trn.p_id(+); 如何查出来 每个人的最近的 一次进出记录?张三, 十点,进门
李四, 十二点,出门上面的 语句查出啦,用重复的人员记录;张三,十点,进门
李四, 十二点,出门
张三,九点,出门;求指点;
解决方案 »
- 创建无大小限制的表空间
- 关于单独存放BLOB文件表空间的问题
- 如何在存储过程内部对语句所影响的记录条数进行统计,最终返回
- 关于linux enterprise 5下oracle10g的问题
- 请教,存储过程经常会在调用后变成invalid,但是打开后,点击[编译]却没有语法错误,并重新成为valid,这是什么原因?
- 从oracle 8i到9i数据增大的问题
- SQL*PLUS里调用一个用PL/SQL写的函数的语法是怎样的?在PB中调用又是怎么样的?在线,谢谢!
- 请问oracleorahome81agent不能启动,怎么办!
- 讨论pro*c和oci的区别
- 高手帮忙!
- 问个问题
- oracle 10g 2r安装到13%停了.
select '001' AS id ,'A' AS p_name FROM DUAL
UNION ALL
select '002' AS id ,'B' AS p_name FROM DUAL
),
TRANSFER AS (
select '001' AS p_id ,'9' AS P_time,'IN' AS P_type FROM DUAL
UNION ALL
select '002' AS p_id ,'10' AS P_time,'OUT' AS P_type FROM DUAL
UNION ALL
select '001' AS p_id ,'11' AS P_time,'OUT' AS P_type FROM DUAL
UNION ALL
select '002' AS p_id ,'8' AS P_time,'IN' AS P_type FROM DUAL
UNION ALL
select '002' AS p_id ,'7' AS P_time,'IN' AS P_type FROM DUAL
)
select p_name, P_time, P_type
from (SELECT ROW_NUMBER() OVER(PARTITION BY P.id ORDER BY T.P_time) as rn,
p_name,
P_time,
P_type
FROM PEOPLE P
LEFT JOIN TRANSFER T ON P.id = T.p_id)
where rn = 1