oracle过程游标查询时case语句

oracle过程游标查询时case语句,oracle,stored-procedures,case-when,cursors,Oracle,Stored Procedures,Case When,Cursors,我使用此查询根据不同的cif和来源对账户余额进行汇总。问题是我想在_Schema _Type _Master的基础上计算四种不同类型的总和。例如,我想现在检查活期账户,而不是存款账户 CURSOR BULKUPDATE IS SELECT SUM(B.ACCOUNT_BALANCE) AS ACCOUNT_BALANCE,C.CIF AS CIF_ID FROM _ACCOUNTS_STAGING2 B JOIN _RELATION_STAGING2 C ON B.ACCOU

我使用此查询根据不同的cif和来源对账户余额进行汇总。问题是我想在_Schema _Type _Master的基础上计算四种不同类型的总和。例如,我想现在检查活期账户,而不是存款账户

CURSOR BULKUPDATE IS 
    SELECT SUM(B.ACCOUNT_BALANCE) AS ACCOUNT_BALANCE,C.CIF AS CIF_ID FROM _ACCOUNTS_STAGING2 B JOIN  _RELATION_STAGING2 C
    ON B.ACCOUNT_IDENTIFICATION_NUMBER = C.ACCOUNT_IDENTIFICATION_NUMBER AND B.SOURCEID=C.SOURCEID JOIN _CUSTOMER_STAGING2 A ON A.CIF=C.CIF AND A.SOURCEID=C.SOURCEID WHERE  C.ROLE_ON_ACCOUNT IN
    (Select Rollonaccount From _Roleaccount_Master Where Aggregatebalance='Y')
    And upper(B.Scheme_Type) In (Select Scheme_Type From _Schema_Type_Master Where 
    Depository_Account = 'Y') Group By C.Cif;
    Rec_Bulkupdate Bulkupdate%Rowtype;
是否有任何方法或我需要为此编写四个不同的游标???

您可以在“选择为”中删除dipository_account='Y'和current_account='Y'以及用例-

_ACCOUNTS_STAGING2 B JOIN  _RELATION_STAGING2 C
    ON B.ACCOUNT_IDENTIFICATION_NUMBER = C.ACCOUNT_IDENTIFICATION_NUMBER AND B.SOURCEID=C.SOURCEID JOIN _CUSTOMER_STAGING2 A ON A.CIF=C.CIF AND A.SOURCEID=C.SOURCEID WHERE  C.ROLE_ON_ACCOUNT IN
    (Select Rollonaccount From _Roleaccount_Master Where Aggregatebalance='Y')
    And upper(B.Scheme_Type) In (Select Scheme_Type From _Schema_Type_Master Where 
    current_account='Y') Group By C.Cif;
    Rec_Bulkupdate Bulkupdate%Rowtype;
然后是代码的其余部分。您将获得存款账户和活期账户之和的两个不同列

如果需要对当前账户和当前账户进行筛选,则在带有or运算符的where条件下使用它们:

SELECT SUM(CASE WHEN Depository_Account = 'Y' THEN B.ACCOUNT_BALANCE ELSE 0 END) AS DIPOSITORY_ACCOUNT_BALANCE, 
       SUM(CASE WHEN current_account = 'Y' THEN B.ACCOUNT_BALANCE ELSE 0 END) AS CURRENT_ACCOUNT_BALANCE
AND (dipository_account='Y' or current_account='Y')