如何汇总收入、支出、余额,计算公式的SQL语句该如何写?计算结果为何不正确! (100分)

  • 主题发起人 主题发起人 janice
  • 开始时间 开始时间
J

janice

Unregistered / Unconfirmed
GUEST, unregistred user!
有三个表,假设为A1,A2,A3,A1记录不重复,A2,A3表中记录有重复业务。
A1表(余额表) A2表(收入表) A3表(支出表)
===============================================================================
编号 当前余额 编号 收入 编号 支出
001 10.00 001 36.23 001 6.30
002 13.50 002 56.50 002 5.60
001 68.60 001 5.60
002 46.00
我想得到这样一张表,SQL语句该如何与?
编号 当前余额 总收入 总支出
001 10.00 104.83 11.90
002 13.50 102.50 5.60
我这样做的目的是想得到这一张表然后计算它是否平衡,请各位高手指点!如我这样设计表不
合理也一并指出。谢谢!


 
SELECT A1.编号,A1.当前余额,Sum(A2.收入),Sum(A3.支出) FROM A1,A2,A3
WHERE A1.编号=A2.编号 and A1.编号=A3.编号
Group BY A1.编号,A1.当前余额
就那么回事情,看看SQL的Group语句就可以了
 
另外好象不是所有数据库都支持Group By如果不支持就只能自己建立统计表了
 
如果a1 中有而a2中或a3中没有,那样就显示不出来
所以应用
SELECT A1.编号,A1.当前余额,Sum(A2.收入),Sum(A3.支出)
FROM A1 left join a2 on A1.编号=A2.编号
left join a3 on A1.编号=A3.编号
Group BY A1.编号,A1.当前余额
 
用上面的语句计算结果不对,请继续帮我!!计算结果如下,但不对。
编号 余额 总收入 总支出
001 10.00 209.66 23.80
002 13.5 102.50 11.20
好象翻倍了一样。
 
select a1.编号,a1.当前余额,a2.总收入,a3.总支出 from a1 left join (select 编号
,sum(收入) as 总收入 from a2 group by 编号) as a2 on a1.编号=a2.编号 left join
(select 编号,sum(支出) as 总支出 from a3 group by 编号) as a3 on a1.编号=a3.编号

 
SELECT a.编号,sum(a.余额) as ye,sum(b.sr) as sr,sum(c.zc) as zc
from 余额 a,sr b,zc c
where a.编号=b.编号 and a.编号=c.编号
group by a.编号
条件时有收入和指出就有余额。
 
to dali2000:运行时提示错误:Invalid use of keyword
Taken:select
Line Number:1
to weiweiHU:计算的结果不对,好象翻倍了一样.
 
不会吧。可能表名有问题,试试:
select a1.编号,a1.当前余额,a21.总收入,a31.总支出 from a1 left join (select 编号
,sum(收入) as 总收入 from a2 group by 编号) as a21 on a1.编号=a21.编号 left join
(select 编号,sum(支出) as 总支出 from a3 group by 编号) as a31 on a1.编号=a31.编号
 
以上的差不多了,

在多表连接查询时,要注意尽量使用表与表之间的内联接,
就是使用join,join有完全连接、左连接和右连接之分。
速度和效率都远好于外连接。
 
dali2000以上的sql语句,将其中的group by 语句去掉,你会发现有好多重复的纪录,
所以,进行group by 的时候,结果不会对。
我认为dali2000的是对的
另外,可以建立汇总收入、支出的视图,再进行查询,就OK了
 
谢谢以上各位,dali2000,ugvanxk的语法在MS SQL中能通过,在paradox中不行。
不好意思,没有说是在paradox中,在paradox中又应该如何处理呢?
我看了一些贴子,都说是要建临时表,但本人不会,烦请各位帮帮我了。
 
多人接受答案了。
 
后退
顶部