SELECT MAX(DECODE(C.RN,'1',C.NAME,NULL))||
MAX(DECODE(C.RN,'2',','||C.NAME,NULL))||
MAX(DECODE(C.RN,'3',','||C.NAME,NULL)) NAME
FROM
(SELECT A.SC,B.NAME,B.ID,B.AGE,
ROW_NUMBER() OVER(PARTITION BY B.ID ORDER BY B.ID) RN
FROM A,B
WHERE A.ID=B.ID) C;
运行的结果有时报错,原本MAX(C.RN)=1的,也会有两个NAME被合并。
但加上ROWNUM问题就解决了,如下:
SELECT MAX(DECODE(C.RN,'1',C.NAME,NULL))||
MAX(DECODE(C.RN,'2',','||C.NAME,NULL))||
MAX(DECODE(C.RN,'3',','||C.NAME,NULL)) NAME
FROM
(SELECT A.SC,B.NAME,B.ID,B.AGE,
ROWNUM,
ROW_NUMBER() OVER(PARTITION BY B.ID ORDER BY B.ID) RN
FROM A,B
WHERE A.ID=B.ID) C;
我想知道是什么原因报错的,解决了又是问什么。
先谢了。
解决方案 »
- 关于ORA-39082。请问谁有metalink账号,能否帮我查下这个错误:Doc ID:460267.1
- oracle的单引号 和双引号的问题 疑惑。
- ORA-01126: 数据库必须已装载到此实例并且不在任何实例中打开???
- 取日期问题
- 这样的oracle 语句怎么写?
- 安装Oracle9i Release 2 Services for MTS 9.2.0.7.0 后 oracle 服务器不能启动
- 如何才能基本掌握oracle???
- 如何安装oracle ?
- 如何将一个表的内容加如到另一个表中?
- 请问:什么是 dirty buffers
- 求教几题查询语句
- 求一条Sql急急急。。。。。。。。。。。。
from (
select e.employee_id, d.department_name,
row_number() over (partition by e.department_id order by e.salary desc) rn
from employees e, departments d
where e.department_id = d.department_id
) t
where rn = 1;
MAX(DECODE(t.RN,'2',','||t.employee_id,NULL))||
MAX(DECODE(t.RN,'3',','||t.employee_id,NULL)) top3
from (
select e.employee_id, d.department_name,
row_number() over (partition by e.department_id order by e.salary desc) rn
from employees e, departments d
where e.department_id = d.department_id
) t
group by t.department_name;樓主,把你的表創建語句和數據insert語句貼出研究一下吧。
就是想知道下,多加的ROWNUM在这里起了什么样的作用。
单独执行SELECT MAX(C.RN) FROM C;当从C中RN=1时,MAX(C.RN)=2。
就是这样。