Oracle SQL - 具有被抑制行数的DISTINCT

时间:2014-07-09 08:46:08

标签: sql oracle count distinct rownum

当我在sql中使用 DISTINCT 子句时,如何添加一个最后一列,其中包含被抑制的行数" 只有一个(因为它们是平等的)。

1 个答案:

答案 0 :(得分:1)

您无法直接使用distinct执行此操作。您可以在已应用count()的子查询中添加分析distinct,但使用汇总count()group by会更简单。您必须在group by子句中包含所有现有的选择列表项。

所以,如果你有一个这样的表:

create table t42 (col1 number, col2 varchar2(10));
insert into t42 values (42, 'AAA');
insert into t42 values (42, 'AAA');
insert into t42 values (42, 'BBB');
insert into t42 values (42, 'BBB');
insert into t42 values (42, 'BBB');
insert into t42 values (43, 'AAA');

你现在正在这样做:

select distinct col1, col2
from t42
order by col1, col2;

      COL1 COL2     
---------- ----------
        42 AAA        
        42 BBB        
        43 AAA        

要获得重复的数量,您可以这样做:

select col1, col2, count(*)
from t42
group by col1, col2
order by col1, col2;

      COL1 COL2         COUNT(*)
---------- ---------- ----------
        42 AAA                 2 
        42 BBB                 3 
        43 AAA                 1