1

1つの列の合計を減算して列を取得しようとしているクエリがあります-他の列ですが、エラーが発生します。これが私がしていることです

select LOSA_APP.app_ref_no AS "App.Ref.No.", 
       CODE_BRANCH.branch_name AS "Business Unit",
       ....
        sum(LOSA_FACILITIES.amt_appr) - DOCS_DISB_SIGN_OFF_LOG.sign_off_amt AS "Amount Not Disbursed",
       ...
from
    losa_app LOSA_APP
INNER JOIN
    code_branch CODE_BRANCH
ON
    LOSA_APP.attend_branch = CODE_BRANCH.branch_id
...
where 
    LOSA_APP.app_status='A'; -- Application Status in {‘accepted’} 

しかし、私はそのエラーを取得しています

ORA-00937: not a single-group group function
00937. 00000 -  "not a single-group group function"
*Cause:    
*Action:
Error at Line: 1 Column: 8

どうすればこれを達成できますか?

4

2 に答える 2

2

ORA-00937: 単一グループのグループ機能ではありません

原因: SELECTリストには、AVG、COUNT、MAX、MIN、SUM、STDDEV、VARIANCEなどのグループ関数と、個々の列式がGROUP BY句に含まれていない限り、個々の列式の両方を含めることはできません。

処置: SELECTリストからグループ関数または個々の列式のいずれかを削除するか、リストされているすべての個々の列式を含むGROUPBY句を追加してください。

https://www.google.com/search?q=ORA-00937%3A+not+a+single-group+group+function&oq=ORA-00937%3A+not+a+single-group+group+function&sugexp = chrome、mod = 6&sourceid = chrome&ie = UTF-8

select LOSA_APP.app_ref_no AS "App.Ref.No.", 
   CODE_BRANCH.branch_name AS "Business Unit",
   ....
    sum(LOSA_FACILITIES.amt_appr) - DOCS_DISB_SIGN_OFF_LOG.sign_off_amt AS "Amount Not Disbursed",
   ...
 from
   losa_app LOSA_APP

 INNER JOIN
   code_branch CODE_BRANCH
 ON
   LOSA_APP.attend_branch = CODE_BRANCH.branch_id
   ...
 GROUP BY LOSA_APP.app_ref_no, LOSA_APP.app_ref_no
 HAVING  LOSA_APP.app_status='A'; -- Application Status in {‘accepted’} 
于 2012-11-30T06:45:49.627 に答える
0

すべてのamt_apprに1つのsign_offがある場合は、これを試してください。

sum(LOSA_FACILITIES.amt_appr - DOCS_DISB_SIGN_OFF_LOG.sign_off_amt)

または、このトリック。繰り返し値のAVGが繰り返し値です。

sum(LOSA_FACILITIES.amt_appr) - AVG(DOCS_DISB_SIGN_OFF_LOG.sign_off_amt)
于 2012-11-30T06:40:15.653 に答える