Plsql 我们如何计算PK并对整个PK列表重复此计数?

Plsql 我们如何计算PK并对整个PK列表重复此计数?,plsql,oracle11g,rownum,Plsql,Oracle11g,Rownum,我们如何计算PK并对整个PK列表重复此计数 例如: select ... where ID IN (0001,0002,0003,0004,0005) 表A(例如,包含3000个寄存器) 在不使用任何过滤器的情况下使用,我们希望: COUNT(*) | ID 3000 | 0001 3000 | 0002 3000 | 0003 3000 | 0004 3000 | 0005 ... Bt当使用过滤器限制结果时,计数必须根据屏幕中的结果反映出来,例如:

我们如何计算PK并对整个PK列表重复此计数

例如:

select ...
where ID IN (0001,0002,0003,0004,0005)
表A(例如,包含3000个寄存器)

在不使用任何过滤器的情况下使用,我们希望:

COUNT(*) | ID
3000     | 0001
3000     | 0002
3000     | 0003
3000     | 0004
3000     | 0005
...
Bt当使用过滤器限制结果时,计数必须根据屏幕中的结果反映出来,例如:

select ...
where ID IN (0001,0002,0003,0004,0005)
那么应该是:

COUNT(*) | ID
5        | 0001
5        | 0002
5        | 0003
5        | 0004
5        | 0005
这看起来很简单,但我无法做到这一点

我尝试过使用
rownum
count(PK)
max(rownum)
,但没有成功

谢谢这个

SQL> select count(*) from emp;

  COUNT(*)
----------
        12

SQL> select empno, count(*) over (order by null) cnt from emp;

     EMPNO        CNT
---------- ----------
      7369         12
      7499         12
      7521         12
      7566         12
      7654         12
      7698         12
      7782         12
      7839         12
      7844         12
      7900         12
      7902         12
      7934         12

12 rows selected.

SQL> select empno, count(*) over (order by null) cnt from emp where deptno = 10;

     EMPNO        CNT
---------- ----------
      7782          3
      7839          3
      7934          3

SQL>

小脚,就是这样!!!非常感谢。我无法想象(按空排序)上会出现类似于计数(*)的情况。