我有一个表,表结构如下:
对象名称(objName) 最新接收时间(receiveDate) 本批记录最后时间(lastDate)
Order 2005-12-01 12:20:10 2005-10-01 20:30:31
Order 2005-12-15 12:20:10 2005-10-13 20:30:31
Order 2005-12-30 09:20:10 2005-11-13 20:30:31
Return 2005-12-01 12:20:09 2005-09-01 20:30:31
Return 2005-12-15 12:31:10 2005-10-21 25:30:31
该表保存了很多对象如:订单,退单....的记录。
我想获得每个对象一条记录,但该条记录中最新接收时间最本对象最新的。
在上面记录中结果希望如下:
Order 2005-12-30 09:20:10 2005-11-13 20:30:31
Return 2005-12-15 12:31:10 2005-10-21 25:30:31可以通过多条语句得到,我希望一条语句,并且效率要比较高。
谢谢各位!!!
对象名称(objName) 最新接收时间(receiveDate) 本批记录最后时间(lastDate)
Order 2005-12-01 12:20:10 2005-10-01 20:30:31
Order 2005-12-15 12:20:10 2005-10-13 20:30:31
Order 2005-12-30 09:20:10 2005-11-13 20:30:31
Return 2005-12-01 12:20:09 2005-09-01 20:30:31
Return 2005-12-15 12:31:10 2005-10-21 25:30:31
该表保存了很多对象如:订单,退单....的记录。
我想获得每个对象一条记录,但该条记录中最新接收时间最本对象最新的。
在上面记录中结果希望如下:
Order 2005-12-30 09:20:10 2005-11-13 20:30:31
Return 2005-12-15 12:31:10 2005-10-21 25:30:31可以通过多条语句得到,我希望一条语句,并且效率要比较高。
谢谢各位!!!
解决方案 »
- 如何得到使用truncate语句删除表记录的来源IP或计算机名?
- 一个sql join的优化问题
- 有经验的推荐一个写SQL的编辑器
- 请教:oracle中比较数据库中两个用户结构的差异
- 在线等1急!前台用VC编的一个应用程序,后台是ACCESS已经形成了.EXE文件,用ODBC连接,现在想把后台改成ORACLE数据库怎么办?谢谢!
- 想学习Oracle数据库,在这里问几个小问题,多谢
- 数据库无法恢复问题,急急急
- 在Oracle建立user 和 相应的tablespace??
- oracle函数中能用update吗?
- oracle 中截取字符串
- 一个简单的sql语句问题--在线等
- 请教一多表求和pl/sql块
2 (
3 COL1 VARCHAR2(20),
4 COL2 VARCHAR2(20),
5 COL3 VARCHAR2(20)
6 );Table createdSQL>
SQL> INSERT INTO testtab VALUES('Order','2005-12-01 12:20:10','2005-10-01 20:30:31');1 row insertedSQL> INSERT INTO testtab VALUES('Order','2005-12-15 12:20:10','2005-10-13 20:30:31');1 row insertedSQL> INSERT INTO testtab VALUES('Order','2005-12-30 09:20:10','2005-11-13 20:30:31');1 row insertedSQL> INSERT INTO testtab VALUES('Return','2005-12-01 12:20:09','2005-09-01 20:30:31');1 row insertedSQL> iNSERT INTO testtab VALUES('RETURN','2005-12-15 12:31:10','2005-10-21 25:30:31');1 row insertedSQL> commit;Commit completeSQL> SELECT DISTINCT col1 AS col1,MAX(col2),MAX(col3) FROM testtab GROUP BY col1;COL1 MAX(COL2) MAX(COL3)
-------------------- -------------------- --------------------
Order 2005-12-30 09:20:10 2005-11-13 20:30:31
Return 2005-12-15 12:31:10 2005-10-21 25:30:31SQL>
执行结果才应改正确!
select objName,receiveDate,lastDate
from (select t.*,row_number() over(partition by objName order by receiveDate desc) rn from tablename t)
where rn = 1
from (select t.*,row_number() over(partition by objName order by receiveDate desc) rn from tablename t)
where rn < 3
你就可以取的每个用户的最近的两条记录.以此类推.