table表里有字段 a b c d 如下 a b c d
2001-1-1 123 张三 备注
2001-1-1 123 李四 备注
2002-1-1 123 张三 备注
2003-1-1 123 李四 备注我要通过查询 如果c字段相同的话 只取时间最大的 查询结果要如下
a b c d
2003-1-1 123 李四 备注
2002-1-1 123 张三 备注该如何写。。谢谢
2001-1-1 123 张三 备注
2001-1-1 123 李四 备注
2002-1-1 123 张三 备注
2003-1-1 123 李四 备注我要通过查询 如果c字段相同的话 只取时间最大的 查询结果要如下
a b c d
2003-1-1 123 李四 备注
2002-1-1 123 张三 备注该如何写。。谢谢
解决方案 »
- 急急急!!来个技术高明的人帮我解决ora-001033错误,纠结一个晚上了
- 如何在SQLPlus中运行imp命令?
- spool导出表数据时,如何去掉执行的sql语句和Spool off
- oracleconnection中的连接字符串Integrated Security=yes的问题
- 如何写一个简单的存储过程(oracle)
- 分页查询的第一页数据 要做特殊处理吗?
- 用sql语句查询数据表中有哪些字段是什么语句?
- 关于Oracle Developer6i生成文件的路径设置问题
- 如何干掉 Oracle Servlet Engine?
- 求救:ORACLE出错:“无法从本地计算机启动OracleServiceTEST000R服务”
- 将windows下面的oracle数据导入到unix下面的oracle应该注意哪些
- 请哪位大虾有Oracle 的下载地址啊,谢谢了。
from (select a,b,c,d,
ROW_NUMBER() OVER (PARTITION BY c ORDER BY a desc) as rn from table)
where rn=1
CREATE TABLE TABLE_A
(A DATE,
B INTEGER,
C VARCHAR2(10),
D VARCHAR2(10)
)
--------- 测试数据
INSERT INTO TABLE_A VALUES(TO_DATE('2001-1-1','YYYY-MM-DD'),'123','张三','备注');
INSERT INTO TABLE_A VALUES(TO_DATE('2001-1-1','YYYY-MM-DD'),'123','李四','备注');
INSERT INTO TABLE_A VALUES(TO_DATE('2002-1-1','YYYY-MM-DD'),'123','张三','备注');
INSERT INTO TABLE_A VALUES(TO_DATE('2003-1-1','YYYY-MM-DD'),'123','李四','备注');
COMMIT;
--------- SQL
SELECT A,
B,
C,
D
FROM (SELECT TABLE_A.*,
ROW_NUMBER() OVER(PARTITION BY C ORDER BY A DESC) AS R
FROM TABLE_A)
WHERE R <= 1 ----- 可以用 R<= N来确定取前N条记录
---------- 结果
A B C D
2003-1-1 123 李四 备注
2002-1-1 123 张三 备注