直到这一行的相同记录的数量

时间:2011-07-19 09:51:16

标签: oracle select plsql count sequence

是否可以使用oracle pl / sql检索每行的当前相同记录数?

例如, 我有一个由id,name,age columns组成的类表

我希望让同一个名字和年龄的学生的序列进入课堂,假设id在不改变数据结构的情况下反击。

感谢。

此致

吉姆

2 个答案:

答案 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来实现目标,那么这是一种更好的方法。