1

クエリを実行しようとしています

select * from OS_Historystep where step_name = '011' and finish_date = max(finish_date) ;

しかし、私はエラーが発生しています

ORA-00934: group function is not allowed here
00934. 00000 -  "group function is not allowed here"
*Cause:    
*Action:
Error at Line: 12 Column: 72

私は何を間違っていますか?

ありがとう

4

2 に答える 2

3

where句で集計を使用することはできません。また、単一の選択で、同じ列の非集計データと集計データを混在させることはできません。サブクエリを使用する必要があります。

select * 
from OS_Historystep hs1
where step_name = '011' 
and finish_date = (select max(finish_date) 
                   from OS_Historystep hs2 
                   where hs2.step_name = hs1.step_name);
于 2013-03-14T13:48:33.523 に答える
2

そのような集約を参照することはできません。max(finish_date)以下のようにサブクエリを配置する必要があります (テーブル全体の最大終了日ではなく、ステップ 011 の最大終了日を意味すると仮定します(行が返されない場合があります):

select * 
  from OS_Historystep 
 where step_name = '011' 
   and finish_date = (select max(finish_date) 
                        from OS_Historystep
                       where step_name = '011');

または分析関数を使用する

select *
  from (select s.*, rank() over (partition by step_name order by finish_date desc) rnk
          from OS_Historystep s
         where step_name = '011')
 where rnk = 1;
于 2013-03-14T13:47:53.333 に答える