A4 *_*age 9 sql oracle oracle-apex
我在Oracle APEX中工作,我想在报告中使用下表中的新值更新列.报告查询显示在下面提到的下图中.
TABLE "VENDOR_ACCOUNT"
( "VEN_ACCOUNTID" NVARCHAR2(10),
"VEN_REGNO" NVARCHAR2(10),
"VEN_TXDATE" DATE,
"VEN_INVOICE_REFNO" NVARCHAR2(10),
"TOTALAMOUNT" NVARCHAR2(10),
"IN" NUMBER(10,0),
"OUT" NUMBER(10,0)
)
SELECT "VEN_ACCOUNTID" ,
"VEN_REGNO" ,
"VEN_TXDATE" ,
"VEN_INVOICE_REFNO" ,
"TOTALAMOUNT" ,
"IN",
"OUT",
"TOTALAMOUNT"+"IN" as "CREDIT",
"TOTALAMOUNT"-"OUT" as "DEBIT"
FROM Vendor_Account;
Run Code Online (Sandbox Code Playgroud)
必需的场景:我想TotalAmount用Debit和更新列Credit.必须在下一条记录的列中显示新值Debit或Credit值TotalBalance.

Select
"VEN_ACCOUNTID" ,
"VEN_REGNO" ,
"VEN_TXDATE" ,
"VEN_INVOICE_REFNO" ,
"TOTALAMOUNT" AS "OLD_TOTALAMOUNT"
"TOTALAMOUNT" + nvl(lag (nvl("IN",0)-nvl("OUT",0))
over (partition by "VEN_REGNO" order by "VEN_ACCOUNTID"
)
,0) AS "TOTALAMOUNT"
"IN",
"OUT",
from Vendor_Account;
Run Code Online (Sandbox Code Playgroud)
您可以使用Oracle分析功能LAG:
Select "VEN_ACCOUNTID" ,
"VEN_REGNO" ,
"VEN_TXDATE" ,
"VEN_INVOICE_REFNO" ,
"TOTALAMOUNT" ,
"TOTALAMOUNT" + lag("IN",1) over (ORDER BY "VEN_ACCOUNTID")
- lag("OUT",1) over (ORDER BY "VEN_ACCOUNTID") AS "NEW_TOTALAMOUNT",
"IN",
"OUT",
"TOTALAMOUNT"+"IN" as "CREDIT",
"TOTALAMOUNT"-"OUT" as "DEBIT"
FROM Vendor_Account;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
452 次 |
| 最近记录: |