繁体   English   中英

甲骨文程序游标查询时的case语句

[英]oracle procedure cursor query when case statement

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计算四种不同类型的总和。 例如,我现在要检查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;

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

您可以删除dipository_account='Y'current_account='Y'并将用例选择为-

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'过滤, dipository_account='Y'在带有or运算符的where条件中使用它们:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM