Oracle 两表查询统计

表Aidid总金额110000220000330000表BA.id消费金额13001500210012000需要结果是id总金额剩余1100007200220000199... 表A
id
id
总金额

1
10000

2
20000

3
30000

表B
A.id
消费金额

1
300

1
500

2
100

1
2000

需要结果是
id
总金额
剩余

1
10000
7200

2
20000
19900

3
30000
30000
因为B表中没有id是3的记录,所有直接用联合查询第三条记录丢失了,麻烦各位大虾在Oracle中怎么写查询语句,谢谢
展开
 我来答
badkano
2013-10-20 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885365
团长

向TA提问 私信TA
展开全部

建表及记录

create table a (id int,总金额 int);
insert into a values (1,10000);
insert into a values (2,20000);
insert into a values (3,30000);

create table b(aid int,消费金额 int);
insert into b values (1,300);
insert into b values (1,500);
insert into b values (2,100);
insert into b values (1,2000); 
commit;

执行

select a.id,a.总金额,sum(nvl(a.总金额,0)-nvl(c.消费金额,0)) 剩余金额 from a 
left join (select aid,sum(b.消费金额) 消费金额 from b group by aid) c on a.id=c.aid group by a.id,a.总金额

结果

ZESTRON
2024-09-04 广告
表面污染分析包括评估表面上存在的颗粒、残留物或物质。通过利用显微镜、光谱学和色谱法等技术,分析人员可以识别和表征污染物,以确定其成分和来源。这种分析在电子、制药和制造等各个行业中至关重要,以确保产品质量、性能和安全性。了解表面污染有助于实施... 点击进入详情页
本回答由ZESTRON提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式