oracle 有一张表A,表中有 a,b,c,d,字段,b字段为日期型,c和其他字段为字符型,在A表中
a b c d
1 4 10 cc
0 5 10 ee
2 6 11 dd
2 7 12 dd
3 8 12 cd
因为A表中存在c字段有相同值,而b字段值不同,但是我想取出以b字段最大的日期c字段唯一的一条记录
比如说前两行记录,c 字段相同,而b字段不同,判断b字段中的最大的那一行记录!
如果c字段是唯一的,那么就直接出去来。则取出的结果如下:
a b c d
0 5 10 ee
2 6 11 dd
3 8 12 cd
请问用那种方法才可以做到!希望能提供例子!
我是菜鸟请多多指教!
------解决方案--------------------
select * from a t1
where not exists(select null from a t2 where t1.c=t2.c and t1.b<t2.b)
对b,c字段建一个组合索引,顺序是(c,b)
或者用
select max(a) keep(dense_rank last order by b)a,
max(b) b,
c,
max(d)keep(dense_rank last order by b) d
from a
group by c;
同样建上面的组合索引
比较一下执行计划,选择表现较好的那个