在列B中查找列A的前5个记录中的前5个记录

时间:2014-11-18 20:30:02

标签: sql

问题是关于SQL查询。我有一个RootCause 1和一个RootCause 2列选项。用户选择主要RootCause,如果适用,他们会选择辅助RootCause以获得更详细的信息。我想找到/创建一个查询,允许我选择在RC1中为RootCause选择RC2中的Top 5 RootCausese。

1 个答案:

答案 0 :(得分:2)

大多数数据库都支持ANSI标准row_number()功能。您可以将此功能与聚合一起使用以获得所需内容:

select t.*
from (select rc1, rc2, count(*) as cnt,
             row_number() over (partition by rc1 order by count(*) desc) as seqnum
      from table t
      group by rc1, rc2
     ) t
where seqnum <= 5;