SQL 查询计算,请高手帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/16 23:35:59
我自已按以下语句只能写这样:
select 订单,产品,数量,金额, 收回,金额-收回 as 余额 from 表
结果如下:

订单 产品 数量 金额 收回 余额
PO001 A 10 200 200 0
PO002 A 200 3000 1000 2000
PO002 A 200 3000 2000 1000

但我期望结果如下,不知能实现不?
订单POO2因分两次回款显示两行,但余额应是订单金额(3000)减两次回款的和(1000+2000),请教高手如何实现如下结果:
订单 产品 数量 金额 收回 余额
PO001 A 10 200 200 0
PO002 A 200 3000 1000 0
PO002 A 200 3000 2000 0

用下面的吧:

select a.订单, a.产品, a.数量, a.金额, a.收回, (a.金额-b.回收总数) as 余额 from 表 a , (select 订单, sum(收回) as 回收总数 from 表 group by 订单 ) b where a.订单=b.订单

楼主这个就不合理了,要减两次就不能分两条记录显示,要么就是一条是一条的。
分条的不用说了,楼主已经实现的就是。
说一下合成一条吧:
select 订单,产品,数量,金额,sum(收回),金额-sum(收回) as 余额 from 表
group by 订单,产品,数量,金额

update 表 t1
set t1.余额=t1.金额-(select sum(收回) from 表 t2 where t2.订单=t1.订单 group by 订单)

注意:上面update的表是你写的sql语句得到的结果集

--经过测试成功:

SQL> create table test(id varchar2(10),jine number,ret number,yue number);

Table created
SQL> insert into test values('PO001',200,200,null);

1 row inserted
SQL> insert into test values('PO002',3000,1000,null);

1 row inserted
SQL> insert into test values('PO002',3000,2000,null);

1 row inserted

SQL> select * from test;

ID JINE RET YUE
---------- -------