是否可以使用oracle pl / sql检索每行的当前相同记录数?
例如, 我有一个由id,name,age columns组成的类表
我希望让同一个名字和年龄的学生的序列进入课堂,假设id在不改变数据结构的情况下反击。
感谢。
此致
吉姆
答案 0 :(得分:1)
不确定我完全得到你要求的东西;你有一个奇怪的短语。输入数据和预期结果的示例始终有用。
也许是这样的:
select id, name, age
from your_table
where (name, age) in
( select name. age
from your_table
group by name, age
having count(id) > 1 )
order by name, age, id
/
您可以使用分析解决此问题。但是,您仍然需要外部查询来过滤掉不重复的记录,因此我不确定您将获得什么:
select * from (
select id, name, age
, count(id) over (partition by name, age) as dup_count
from your_table )
where dup_count > 1
order by name, age, id
/
答案 1 :(得分:0)
我也不确定,但它听起来与分析功能有关。以此为例,查看使用分析函数计算的srlno列:
SELECT empno, deptno, hiredate,
ROW_NUMBER( ) OVER (PARTITION BY
deptno ORDER BY hiredate
NULLS LAST) SRLNO
FROM emp
WHERE deptno IN (10, 20)
ORDER BY deptno, SRLNO;
EMPNO DEPTNO HIREDATE SRLNO
------ ------- --------- ----------
7782 10 09-JUN-81 1
7839 10 17-NOV-81 2
7934 10 23-JAN-82 3
7369 20 17-DEC-80 1
7566 20 02-APR-81 2
7902 20 03-DEC-81 3
7788 20 09-DEC-82 4
7876 20 12-JAN-83 5
有关分析功能的更多信息: http://www.orafaq.com/node/55
请记住,如果您可以使用SQL而不是PL / SQL来实现目标,那么这是一种更好的方法。