【问题标题】:oracle procedure cursor query when case statementoracle过程游标查询case语句时
【发布时间】:2014-08-12 07:46:36
【问题描述】:
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;

我正在使用此查询根据不同的 CIF 和来源来汇总帐户余额。问题是我想在_Schema_Type_Master的基础上计算四种不同类型的sum。例如我想现在检查 current_account='Y' 而不是 Depository_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;

有什么方法或者我需要为此编写四个不同的游标吗??

【问题讨论】:

    标签: oracle stored-procedures case-when cursors


    【解决方案1】:

    您可以删除 dipository_account='Y'current_account='Y' 以及 select as 中的用例 -

    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
    

    然后是其余的代码。您将获得存款账户和当前账户总和的两个不同列。

    如果需要过滤 dipository_account='Y'current_account='Y',则在 where 条件中使用它们并使用 or 运算符:

    AND (dipository_account='Y' or current_account='Y')
    

    【讨论】:

      猜你喜欢
      • 2021-10-26
      • 2011-09-15
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      相关资源
      最近更新 更多