表A 档案号,姓名
001 AA
002 BB
003 CC
表B 档案号,日期,目的地
001 10-09-10 上海
002 10-09-13 北京
003 10-09-15 西安
001 10-09-20 昆明
002 10-09-25 成都
003 10-09-22 合肥
001 10-10-08 广州求最后一次出差列表
001 10-10-08 广州
002 10-09-25 成都
003 10-09-22 合肥这怎么写?
001 AA
002 BB
003 CC
表B 档案号,日期,目的地
001 10-09-10 上海
002 10-09-13 北京
003 10-09-15 西安
001 10-09-20 昆明
002 10-09-25 成都
003 10-09-22 合肥
001 10-10-08 广州求最后一次出差列表
001 10-10-08 广州
002 10-09-25 成都
003 10-09-22 合肥这怎么写?
select t.* from b t where not exists (select 1 from b where 档案号 = t.档案号 and 日期 > t.日期)
insert into b values('001', '10-09-10', '上海')
insert into b values('002', '10-09-13', '北京')
insert into b values('003', '10-09-15', '西安')
insert into b values('001', '10-09-20', '昆明')
insert into b values('002', '10-09-25', '成都')
insert into b values('003', '10-09-22', '合肥')
insert into b values('001', '10-10-08', '广州')
goselect t.* from b t where 日期 = (select max(日期) from b where 档案号 = t.档案号) order by t.档案号
/*档案号 日期 目的地
---------- ---------- ----------
001 10-10-08 广州
002 10-09-25 成都
003 10-09-22 合肥(所影响的行数为 3 行)
*/
select t.* from b t where not exists (select 1 from b where 档案号 = t.档案号 and 日期 > t.日期) order by t.档案号/*档案号 日期 目的地
---------- ---------- ----------
001 10-10-08 广州
002 10-09-25 成都
003 10-09-22 合肥(所影响的行数为 3 行)
*/drop table b
insert into a values('001', 'AA')
insert into a values('002', 'BB')
insert into a values('003', 'CC')create table B(档案号 varchar(10),日期 varchar(10),目的地 varchar(10))
insert into b values('001', '10-09-10', '上海')
insert into b values('002', '10-09-13', '北京')
insert into b values('003', '10-09-15', '西安')
insert into b values('001', '10-09-20', '昆明')
insert into b values('002', '10-09-25', '成都')
insert into b values('003', '10-09-22', '合肥')
insert into b values('001', '10-10-08', '广州')
goselect a.姓名 , t.* from a , b t where a.档案号 = t.档案号 and 日期 = (select max(日期) from b where 档案号 = t.档案号) order by t.档案号
/*姓名 档案号 日期 目的地
---------- ---------- ---------- ----------
AA 001 10-10-08 广州
BB 002 10-09-25 成都
CC 003 10-09-22 合肥(所影响的行数为 3 行)
*/
select a.姓名 ,t.* from a , b t where a.档案号 = t.档案号 and not exists (select 1 from b where 档案号 = t.档案号 and 日期 > t.日期) order by t.档案号/*姓名 档案号 日期 目的地
---------- ---------- ---------- ----------
AA 001 10-10-08 广州
BB 002 10-09-25 成都
CC 003 10-09-22 合肥(所影响的行数为 3 行)
*/drop table a , b
同意楼上方法,不过不能再按"日期"分组了。
select b.档案号,max(b.日期),b.目的地 from b group by 档案号
这样就可以了。能满足楼主需求。。