在oracle中创建表变量

时间:2014-04-03 12:04:26

标签: sql oracle variables

我如何获得别名'价值'从PF_BANKACCOUNTS_TRANSACTIONS到PF_BANKACCOUNTS_TRANSACTIONS.ACCOUNT_ID的余额?

SELECT SUM(TRANSACTION_AMOUNT) value 
FROM PF_BANKACCOUNTS_TRANSACTIONS b  
GROUP BY ACCOUNT_ID 

UPDATE TABLE PF_BANKACCOUNTS_BALANCE 
SET BALANCE =  value 
WHERE b.ACCOUNT_ID =  PF_BANKACCOUNTS_TRANSACTIONS.ACCOUNT_ID

3 个答案:

答案 0 :(得分:0)

试试这个

UPDATE PF_BANKACCOUNTS_BALANCE
   SET BALANCE =
          (SELECT SUM (TRANSACTION_AMOUNT) VALUE
             FROM PF_BANKACCOUNTS_TRANSACTIONS b
            WHERE b.ACCOUNT_ID = PF_BANKACCOUNTS_TRANSACTIONS.ACCOUNT_ID);

答案 1 :(得分:0)

您可以使用相关的UPDATE语句或MERGE:

UPDATE PF_BANKACCOUNTS_BALANCE b
   SET BALANCE =
          (SELECT SUM (TRANSACTION_AMOUNT)
             FROM PF_BANKACCOUNTS_TRANSACTIONS t
            WHERE b.ACCOUNT_ID = t.ACCOUNT_ID)
WHERE EXISTS (SELECT * FROM PF_BANKACCOUNTS_TRANSACTIONS t
WHERE b.ACCOUNT_ID = t.ACCOUNT_ID)
/


MERGE INTO PF_BANKACCOUNTS_BALANCE b
USING (SELECT SUM(TRANSACTION_AMOUNT) VALUE, ACCOUNT_ID
             FROM PF_BANKACCOUNTS_TRANSACTIONS t
            WHERE GROUP BY t.ACCOUNT_ID) s
ON (b.ACCOUNT_ID = s.ACCOUNT_ID)            
WHEN MATCHED THEN
  UPDATE SET b.BALANCE = s.VALUE
/

答案 2 :(得分:0)

使用PL / SQL很容易退出。

declare
value number;
begin
select sum(TRANSACTION_AMOUNT) into value from PF_BANKACCOUNTS_TRANSACTIONS b  group by ACCOUNT_ID;
 set BALANCE = value where b.ACCOUNT_ID =  PF_BANKACCOUNTS_TRANSACTIONS.ACCOUNT_ID;
end;
/