2

次のリクエストを実行していますが、「ORA-00979:GROUPBY式ではありません」というエラーが表示されます。

select distinct 
field1, 
field2, 
field3, 
count(*) as field4, 
field5, 
field6,
case
when smt1>0 then 'Deleted'
when smt2>0 then 'Impacted'
when smt3>0 then 'Unknown'
else 'Clean'
end as field7, 
field8, 
field9, 
field10,
field11, 
field12, 
field13
from (<here a big sub query>) A
group by field1, field2
order by field1, field2

グループ化関数(MAXやSUMなど)を除いて、SELECTのすべての列をGROUP BYステートメントに配置する必要があることを知っているので、次のクエリを試していますが、同じエラーメッセージが表示されます。

select distinct 
field1, 
field2, 
field3, 
count(*) as field4, 
field5, 
field6,
case
when smt1>0 then 'Deleted'
when smt2>0 then 'Impacted'
when smt3>0 then 'Unknown'
else 'Clean'
end as field7, 
field8, 
field9, 
field10,
field11, 
field12, 
field13
from (<here a big sub query>) A
group by field1, field2, field3, field5, field6, field8, field9, field10, field11, field12, field13
order by field1, field2

クエリの全体的な意味を変更せずに、どうすればそれを解決できますか?

マーティン、ありがとうございました

4

2 に答える 2

5

field7あなたはあなたのgroup by表現に欠けています。

また、同じクエリの式でグループ内のエイリアスを使用することはできません。CASEfield7を含めるには、groupby式に完全なステートメントを追加する必要があります。

group byでエイリアスについて言及することはできません。これSELECTは、このステップがクエリの実行を実行する最後のステップであるため、エイリアス名がまだ定義されていない場合、グループ化はより早く行われます。

于 2011-02-17T11:20:28.587 に答える
4

式を追加する必要があります

case
when smt1>0 then 'Deleted'
when smt2>0 then 'Impacted'
when smt3>0 then 'Unknown'
else 'Clean'
end

あなたのgroup by表現に。

于 2011-02-17T11:21:42.170 に答える