gpt4 book ai didi

sql - 如何使用 SQL 显示两个表中的 CREDIT、DEBIT 和 BALANCE?

转载 作者:行者123 更新时间:2023-12-04 18:26:00 25 4
gpt4 key购买 nike

我有两个表 PAYINVO 我想在一个表中显示我也按日期排序

image

最佳答案

假设数据库是Oracle。可以使用Oracle的解析函数SUM达到预期的效果。

这是基于所提供数据的解决方案。

create table pay 
(
name varchar(10),
"date" date,
money number
);

create table invo
(
name varchar(10),
"date" date,
invo_total number
);

insert into pay values ('mark',to_date('01012016','mmddyyyy'),100);
insert into pay values ('mark',to_date('01012017','mmddyyyy'),200);

select * from pay;


姓名 日期 金钱
-------------------- --------
标记 01-JAN-16 100
标记 01-JAN-17 200

insert into invo values ('mark',to_date('03012015','mmddyyyy'),200);
insert into invo values ('mark',to_date('02012016','mmddyyyy'),150);
insert into invo values ('mark',to_date('01022017','mmddyyyy'),200);

select * from invo;


名称 日期 INVO_TOTAL
------------ -------- ----------
标记 01-MAR-15 200
标记 01-FEB-16 150
标记 01-FEB-17 200

WITH trans_dtls AS
(
SELECT rownum rn,
name,
"date",
NVL(i.invo_total,0) de,
NVL(p.money,0) cr,
NVL(i.invo_total,0)- NVL(p.money,0) AS curr_sum
FROM pay p
FULL OUTER JOIN invo i USING (name,"date")
ORDER BY name,"date"
)
SELECT
td1.name,
td1."date",
de,
cr,
SUM(td1.curr_sum) over (order by td1.name,"date") bal
FROM trans_dtls td1;


姓名 日期 DE CR BAL
------------ --------- ------------ --------- -------- ---
标记 01-MAR-15 200 0 200
标记 01-JAN-16 0 100 100
标记 01-FEB-16 150 0 250
标记 01-JAN-17 0 200 50
标记 01-FEB-17 200 0 250

关于sql - 如何使用 SQL 显示两个表中的 CREDIT、DEBIT 和 BALANCE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42337381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com