麻烦帮忙看一下这个语句错在哪里
表 tt 表结构如下
rid, client_id, job_date, ysk_money, yfk_money
(其中 ysk_money 应收款,yfk_money 应付款)
1 1001 07-06-01 1000
2 1001 07-06-05 3000
3 1002 07-06-02 20000
4 1001 07-05-03 3000
5 1001 07-06-06 1000
我想算出每行的累加数,也就是截止到这一行的累计应收款,累计应付款,余额
用下面的语句可以算出,但觉得似乎每个累计都要重算一次,挺耗资源的
select a.rid, a.job_date, a.ysk_money, a.yfk_money, (select sum(ysk_money) as ysk_left from tt b
where b.client_id = a.client_id and b.job_date <= a.job_date and b.rid <= a.rid), ...
from tt a
能不能把三个累计一次算完,就像下面这样
select a.rid, job_date, ysk_money, yfk_money, c.ysk_left, c.yfk_left
from tt a inner join (select rid, sum(ysk_money) as ysk_left, sum(yfk_money) as yfk_left from tt b
where b.client_id = a.client_id and b.job_date <= a.job_date and b.rid <= a.rid group by rid) c on a.rid = c.rid
---提示出错
服务器: 消息 107,级别 16,状态 2,行 1
列前缀 'a ' 与查询中所用的表名或别名不匹配。
服务器: 消息 107,级别 16,状态 1,行 1
列前缀 'a ' 与查询中所用的表名或别名不匹配。
服务器: 消息 107,级别 16,状态 1,行 1
列前缀 'a ' 与查询中所用的表名或别名不匹配。
服务器: 消息 107,级别 16,状态 1,行 1
列前缀 'a ' 与查询中所用的表名或别名不匹配。
------解决方案-------------------- select rid, client_id, job_date, ysk_money, yfk_money,
ysk_left = (select sum(ysk_money)
from tt where client_id = a.client_id and
job_date <= a.job_date and rid <= a.rid ),
yfk_left = (select sum(yfk_money)
from tt where client_id = a.client_id and
job_date <= a.job_date and rid <= a.rid )
from tt a
不过感觉楼主的数据根算法有点问题。