你原表里就有余额这个列啊
你不想显示原来表中的“余额”列,那就不要写*啊
SELECT id,日期,合计,退款金额,(合计-退款金额) AS 余额 FROM sf
你不想显示原来表中的“余额”列,那就不要写*啊
SELECT id,日期,合计,退款金额,(合计-退款金额) AS 余额 FROM sf
解决方案 »
- 如何对数据库中的一列 int型进行求和处理.
- 关于树的排序,高手帮忙,谢谢
- insert时需要加锁吗?
- 救命啊,sql08装不上
- 如何将数千万的表数据,迁移一部分至其他服务器
- 两个存储过程间事务的问题,错误信息“不能在 INSERT-EXEC 语句内部使用 ROLLBACK 语句”,请高手帮忙,谢谢。
- 这个问题很奇怪,各位SEE一SEE
- 送分--征求VFP源码(非常简单)
- 有谁用Access做过应用程序,我说的不仅仅是用Access存储数据,用Access开发应用程序到底有什么优缺点?可有好书推荐?
- 超急!本人现在可用分:1200,能解决的话要多少都给
- 紧急:SQL 2005启动后又停止求教
- 调试存储过程时怎么监视表变量的值
WITH SF(id,日期,合计,退款金额,余额) AS (
SELECT 1,'2009-11-11',1200,80,0 UNION ALL
SELECT 2,'2009-11-11',0,100,0 UNION ALL
SELECT 3,'2010-03-03',233400,0,0 UNION ALL
SELECT 4,'2010-03-03',0,15400,0 UNION ALL
SELECT 5,'2012-02-13',100,0,0 UNION ALL
SELECT 6,'2014-03-15',1600,80,0 UNION ALL
SELECT 7,'2014-08-08',8600,100,0 UNION ALL
SELECT 8,'2014-08-08',0,430,0 UNION ALL
SELECT 9,'2015-02-10',1250,220,0
)*/
SELECT t.日期,
t.合计 收入,
t0.余额+t.合计 AS 合计,
t.退款金额,
t0.余额+t.合计-t.退款金额 AS 余额
FROM SF t
CROSS APPLY (SELECT ISNULL(SUM(合计-退款金额),0) 余额
FROM SF
WHERE id < t.ID
) t0
ORDER BY t.id
日期 收入 合计 退款金额 余额
---------- ----------- ----------- ----------- -----------
2009-11-11 1200 1200 80 1120
2009-11-11 0 1120 100 1020
2010-03-03 233400 234420 0 234420
2010-03-03 0 234420 15400 219020
2012-02-13 100 219120 0 219120
2014-03-15 1600 220720 80 220640
2014-08-08 8600 229240 100 229140
2014-08-08 0 229140 430 228710
2015-02-10 1250 229960 220 229740