2016-01-15 50 views
0

我有一个SQL查询,获取与最多的项目的订单。我这样做是这样的:我怎样才能得到在SQL中的最大行的PK

select max(ab.num) as anzahl 
    from (select auf.anr as anr,count(*) as num from 
     Auftrag auf, Table(auf.positionen) po group by auf.anr ) ab ; 

我的结果是这样的:

enter image description here

我想知道如何获得订单ID [auf.anr]这条命令的。我如何修改我的查询以获得所需的结果?

这是顺序表(定做):

enter image description here

+1

什么是“Table(auf.positionen)”?这看起来不错 –

+0

这是一个订单项目数组 – user3232446

回答

1

一种方式做,这是使用的row_number解析函数:

with cte as (
    select auf.anr as anr, 
     count(*) as num 
    from Auftrag auf, Table(auf.positionen) po 
    group by auf.anr 
) 
select anr 
    from (select anr, 
       row_number() over (order by num desc) as rn 
      from cte) 
where rn = 1 

...或者,使用方法,胡安卡洛斯是建议(使用rownum),这将是语法:

with cte as (
    select auf.anr as anr, 
     count(*) as num 
    from Auftrag auf, Table(auf.positionen) po 
    group by auf.anr 
) 
select anr 
    from (select * 
      from cte 
     order by num desc) 
where rownum = 1 
+0

谢谢你多数民众赞成工作!大!。你能解释为什么你这样做吗?= – user3232446

+0

我认为德国代码阻止了我的大脑,忘记了'row_number()'。但是我认为OP应该考虑'RANK()'以防万一有可能发生关系 –

+1

您应该做一些阅读oracle可以比我们先解释一下[ROW_NUMBER()](https://docs.oracle.com/cd/ B19306_01/server.102/b14200/functions137.htm)和[RANK()](https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions123.htm) –