通过一段比较复杂的sql语句 (……)取得如下结果:id v1 v2 v3 v4
001 a xx 1
001 b 2
001 c 3
002 d 1
002 e 2
003 f 1
003 g 2
003 f 3
等等数据量比较大
我想要的结果是
id分别为001,002,003 对应的v4值最大的一行
即:
001 c xx 3
002 e 2
003 f 3
001 a xx 1
001 b 2
001 c 3
002 d 1
002 e 2
003 f 1
003 g 2
003 f 3
等等数据量比较大
我想要的结果是
id分别为001,002,003 对应的v4值最大的一行
即:
001 c xx 3
002 e 2
003 f 3
解决方案 »
- 有没有类似BO的报表工具,C/S模式且免费的。
- 【请教】每个视图是否都有基本表? 如果知道视图如何找到基本表?
- 请问一下这个SQL语句如何写呢?
- oracle开发编码问题!
- 请教有两台装有linux+oracle10g的服务器,如果把两台做成集群式,如何做?
- 如何在WINXP PRO(SP2)的NTFS分区下ORACLE_HOME目录进行安全认证设置?
- 能不能把oracle所有的表空间都放到裸设备上?
- 如何增加ORACLE连接数
- 浏览器需要通过设置代理才能上网10.xx.xx.xx方式,PLSQL如何设置代理访问外网数据?
- plsql连接oracle疑难杂症求帮助
- 如何将excel数据导入oracle中,下面方法不明白,高手指点!!! !!!
- 有一个复杂的sql查询语句,想用存储过程来写,返回查询结果集合,格式改怎么写
001 a xx 1
001 b 2
001 c 3
002 d 1
002 e 2
003 f 1
003 g 2
003 f 3
……
数据比较多,,
(Select c.id,max(c.v4) From Table c group by c.id) B
where a.id = b.id
and a.v4 = b.v4
select id,v1,v2,v3,v4 from a where id in (select id,max(v4) from a group by id);
id v1 v2 v3 v4
001 a xx 1
001 b 2
001 c 3
002 d 1
002 e 2
003 f 1
003 g 2
003 f 3
……
这些数据不是一个表,,我是也是用(……)其中省略一段sql语句从N个表中取出来的,,难不成让我Select a.id,a.v1,a.v2,a.v3,max(b.v4) From (……) a ,
(Select c.id,max(c.v4) From (……) c group by c.id) B
where a.id = b.id
and a.v4 = b.v4这样效率是不是差了点。
from
(select row_number()over(partition by id order by v4 desc) rn,id,v1,v2,v3,v4
from tablename)
where rn=1
;
first_value(v2) over(partition by id order by v4 desc) v2,
first_value(v3) over(partition by id order by v4 desc) v3,
max(v4) over (partition by id) v4
from tablename;