我有两张表
A表:
用户 存款 日期
admin 1000 2014-01-01
admin 1500 2014-01-05
B表
用户 取款 日期
admin 750 2014-01-03
admin 420 2014-01-07
现在想用一句SQL达成以下结果:
用户 事件类型 金额 余额 日期
admin 存款 1000 1000 2014-01-01
admin 取款 750 250 2014-01-03
admin 存款 1500 1750 2014-01-05
admin 取款 420 1330 2014-01-07
请教各位大神 这个SQL应该怎么写?
-**--*-
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
先两个表join 在order by time
select * from (select * from A union select * from B) as C order by time asc;
A表和B表字段数目要相同,SQL未测试
######回复 @神州浪子 : 是的,开始没看到余额,这余额好像没办法直接搞出来,要是把余额单独建一次表,每次操作后把余额计算对应存进去,不知道行不行得通######谢谢,思路很好,只是后面的余额计算很麻烦######第一,你错在把存取款放在俩表里。
第二,你这两个表里总得有个 account id 吧,这样才能 join 啊
哎,
######刚看了下 原来的表是有关联id的。。 现在更改了 麻烦帮忙看看能解决么######我也不知道是哪个混蛋设计的表。。。 假设有ID,这个SQL应该怎么写呢?######select u,'存款',金额,时间 , ((select sum(存款金额) from a as a1 where a1.时间 <= a.时间) -(select sum(取款金额) from b as b1 where b1.时间 <= a.时间)) as 余额 from a
uniun
select u,'取款',金额,时间 , ((select sum(存款金额) from a as a1 where a1.时间 <= b.时间) -(select sum(取款金额) from b as b1 where b1.时间 <= b.时间)) as 余额 from b
仅供参考..
######用日期和存款、取款分组,sum(存款)—sum(取款),两表用用户关联######写一个存储过程将b表插入a表如何?取款字段为负######
会用窗口函数一点都不麻烦,不过MYSQL好像没有这个武器