表 tab
code name time
AB 张三 2011-1-30
AB 张三 2011-1-2
AC 李四 2011-1-29
AC 李四 2011-1-3需要的效果是
code name time
AB 张三 2011-1-30
AC 李四 2011-1-29求SQL语句 数据库是 Oracle数据库大神解决啊
code name time
AB 张三 2011-1-30
AB 张三 2011-1-2
AC 李四 2011-1-29
AC 李四 2011-1-3需要的效果是
code name time
AB 张三 2011-1-30
AC 李四 2011-1-29求SQL语句 数据库是 Oracle数据库大神解决啊
想了个试一下
select code,name,max(time) from tab group by code,name
或者还有其他字段,但是不能group by就用分析函数row_number
SELECT code, name, time
FROM (SELECT code,
name,
time,
ROW_NUMBER () OVER (PARTITION BY code ORDER BY time DESC)
rn
FROM tab)
WHERE rn = 1
(
CODE VARCHAR2(20),
NAME VARCHAR2(20),
TIME DATE
);INSERT INTO T83 VALUES('AB', '张三', to_date('2011-01-30', 'YYYY-MM-DD'));
INSERT INTO T83 VALUES('AB', '张三', to_date('2011-01-02', 'YYYY-MM-DD'));
INSERT INTO T83 VALUES('AC', '李四', to_date('2011-01-29', 'YYYY-MM-DD'));
INSERT INTO T83 VALUES('AC', '李四', to_date('2011-01-03', 'YYYY-MM-DD'));
实测结果: