0

テーブル列に合計関数を適用しようとしていますが、エラーが発生しています

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

ここにクエリがあります

select LOSA_APP.app_ref_no AS "App.Ref.No.",  
   CODE_BRANCH.branch_name AS "BRANCH",
   CODE_STAFF.staff_name AS "Officer Name",
   LOSA_CUST.full_name AS "Borrower",
   LOSA_FACILITIES.fac_type AS "Facility Type",
   losa_facilities.amt_appr AS "Limit"
from losa_app LOSA_APP
...
INNER JOIN
    losa_facilities LOSA_FACILITIES
ON
    LOSA_APP.app_ref_no = LOSA_FACILITIES.app_ref_no
where 
    LOSA_APP.app_status='A' 
and 
    .....
and 
    sum(losa_facilities.amt_appr) 

46行目sum(losa_facilities.amt_appr)も試してみsum(losa_facilities.amt_appr) group by losa_facilities.amt_apprましたがうまくいきませんでした。

なぜそう言っているのかgroup function is not allowed here ?。私は何を間違っていますか?

ありがとう

編集: - - - - - - - - - - - - - - - - - - - - - - - - --------------------------------

select LOSA_APP.app_ref_no AS "App.Ref.No.",  
   CODE_BRANCH.branch_name AS "BRANCH",
   CODE_STAFF.staff_name AS "Officer Name",
   LOSA_CUST.full_name AS "Borrower",
   LOSA_FACILITIES.fac_type AS "Facility Type",
   LOSA_FACILITIES.amt_appr AS "Limit"
from losa_app LOSA_APP
INNER JOIN
    losa_app_z LOSA_APP_Z  
ON
    losa_app.app_ref_no = losa_app_z.app_ref_no 
INNER JOIN
    code_branch CODE_BRANCH
ON
    LOSA_APP.attend_branch = CODE_BRANCH.branch_id
INNER JOIN
    code_staff CODE_STAFF
ON
    LOSA_APP.attend_staff = CODE_STAFF.staff_id
INNER JOIN
    losa_cust LOSA_CUST
ON
    LOSA_APP.app_ref_no = LOSA_CUST.app_ref_no
INNER JOIN
    losa_facilities LOSA_FACILITIES
ON
    LOSA_APP.app_ref_no = LOSA_FACILITIES.app_ref_no
where 
    LOSA_APP.app_status='A' 
and 
    trunc(sysdate) between (nvl(LOSA_APP_Z.li_dt, LOSA_APP_Z.li_collect_dt)) AND ((trunc(sysdate))) -- falling under the reporting period
and
    (trunc(sysdate) - nvl(losa_app_z.li_dt,losa_app_z.li_collect_dt)) > 90  -- select application cases at any step after entering Documentation flows.
and 
    losa_app.product_type = :productType -- Select records based on input parameter value passed in. 
and
    code_branch.branch_code1 -- Attending IHP Branch passed in from input parameter
    like
    case :inputChannel 
        when 'ABB'  Then '%0232%'
        when 'AiBB' Then '%0347%' 
    end
and
    LOSA_CUST.app_joint_t = 'P' -- Name of PS No. staff name
and 
    GROUP BY (LOSA_APP.app_ref_no, CODE_BRANCH.branch_name, CODE_STAFF.staff_name, LOSA_CUST.full_name, LOSA_FACILITIES.fac_type) 
    HAVING sum(LOSA_FACILITIES.amt_appr) > 0

エラー

ORA-00936: missing expression
00936. 00000 -  "missing expression"
*Cause:    
*Action:
Error at Line: 46 Column: 5

46行目はGROUP BY (LOSA_APP.app_ref_no, CODE_BRANCH.branch_name,...

私もこれを試しました

select LOSA_APP.app_ref_no AS "App.Ref.No.",  
   CODE_BRANCH.branch_name AS "BRANCH",
   CODE_STAFF.staff_name AS "Officer Name",
   LOSA_CUST.full_name AS "Borrower",
   LOSA_FACILITIES.fac_type AS "Facility Type",
   sum(LOSA_FACILITIES.amt_appr) AS "Limit"
from losa_app LOSA_APP
INNER JOIN
....

select句でsumを使用するだけですが、この場合、エラーが発生します

ORA-00937: not a single-group group function
00937. 00000 -  "not a single-group group function"
*Cause:    
*Action:
4

2 に答える 2

1

集計関数 (SUM/AVERAGE など) を使用するには、GROUP BY句を使用して結果をグループ化する必要があります。列の集計に基づいて結果をフィルター処理するGROUP BYには、選択した列に対して を実行してから、HAVING句を使用してフィルターを指定する必要があります。

select LOSA_APP.app_ref_no AS "App.Ref.No.",  
   CODE_BRANCH.branch_name AS "BRANCH",
   CODE_STAFF.staff_name AS "Officer Name",
   LOSA_CUST.full_name AS "Borrower",
   LOSA_FACILITIES.fac_type AS "Facility Type",
   losa_facilities.amt_appr AS "Limit"
from losa_app LOSA_APP
...
INNER JOIN
    losa_facilities LOSA_FACILITIES
ON
    LOSA_APP.app_ref_no = LOSA_FACILITIES.app_ref_no
where 
    LOSA_APP.app_status='A' 
and 
    .....
GROUP BY <all the columns in the  SELECT clause above, except those on which aggregate functions are applied>
HAVING sum(losa_facilities.amt_appr) <relational operator and value>
于 2012-11-21T06:15:11.237 に答える
0

SUM() およびその他のグループ化関数は、WHERE 句ではなく、HAVING 句に指定する必要があります。

于 2012-11-21T06:15:07.697 に答える