2016-12-13 14 views
0

私は選択ORA-00937: - 私は、単一のグループのグループ機能をない得るそれを実行しようとすると、「ない単一グループのグループ機能」

select distinct 
    min(trunc(ALL_SUBS_DAY.CHARGE_AMT * SUP.SHARE_USAGE, 4)) + (ALL_SUBS_DAY.CHARGE_AMT - sum(trunc(ALL_SUBS_DAY.CHARGE_AMT * SUP.SHARE_USAGE, 4))) as CHARGE_AMT 
from table names; 

を持っています。 このようにすれば

select 
    min(trunc(ALL_SUBS_DAY.CHARGE_AMT * SUP.SHARE_USAGE, 4)) + (ALL_SUBS_DAY.CHARGE_AMT - sum(trunc(ALL_SUBS_DAY.CHARGE_AMT * SUP.SHARE_USAGE, 4))) as CHARGE_AMT 
from table names 
group by SUBS_DAY.CHARGE_AMT, SUP.SHARE_USAGE; 

が動作します。グループのように明確に区別されていないのですか?実際にすべての列を列挙する必要があるのですか、それともそれをしない方法がありますか?

+0

[この質問](http://stackoverflow.com/questions/164319/is-there-any-difference-between-group-by-and-distinct)をご覧ください。 – Aleksej

答えて

1

問題はALL_SUBS_DAY.CHARGE_AMTです。
これでグループ化するのではなく、集約関数を使用していません。

+ (ALL_SUBS_DAY.CHARGE_AMT - sum(

別個 分(TRUNC(ALL_SUBS_DAY.CHARGE_AMT * SUP.SHARE_USAGE、4))+(ALL_SUBS_DAY.CHARGE_AMT - 和(TRUNC(ALL_SUBS_DAY.CHARGE_AMT * SUP.SHARE_USAGE、4)))を選択するようにテーブル名からのCHARGE_AMT ;例えば、すべての列/表現によって

場合にのみ、あなたのグループによるグループなどの

DISTINCT仕事とすべての列/式を選択し、 -

select distinct a,b,c,d,e from t; 

=

select a,b,c,d,e from t group by a,b,c,d,e; 

あなたは無意味distinct作るもの、で集計しませんでしたので、あなたの最初のクエリは、単一の行を返します。

+0

sum(trunc(ALL_SUBS_DAY.CHARGE_AMT * SUP.SHARE_USAGE、4))))。 agregate関数の合計ではありませんか? –

+0

@EugeneCuz、これは私があなたを指摘した場所ではありません。この列は、もう一度表示されます。 –

関連する問題