额外金额 10000金额a 金额b 金额c(需处理后显示)
1000 200 10000+1000-200 = 10800
2000 300 10800+2000-300 = 12500
4000 400 12500+4000-400 = 16100
也就是下一行的结果依赖于上一行的结果。金额a和b都是数据表里的字段。金额c是需要处理后显示在页面上的。中间的处理被难住了。希望各位帮下忙或提示下。谢谢了。
1000 200 10000+1000-200 = 10800
2000 300 10800+2000-300 = 12500
4000 400 12500+4000-400 = 16100
也就是下一行的结果依赖于上一行的结果。金额a和b都是数据表里的字段。金额c是需要处理后显示在页面上的。中间的处理被难住了。希望各位帮下忙或提示下。谢谢了。
解决方案 »
- asp.net程序运行后,web.config为什么会生成很多行
- 新浪微博、腾讯微博API中使用的OAuth认证方式,它提供的授权令牌、使用者密钥是否有过期时间
- DATALIST绑定数据是不是这个样子??
- Oracle 与MSSQL主要有什么区别
- 网站登陆问题
- 为什么我把web程序拷到别的机器上,浏览页面时,有的控件就看不到呢.
- 菜鸟问题。。。SQL的 int 类型只能填入4位数字,可是我要存入的数字有超过 8 位数。。。?
- 那位老能教教我怎么样配置windows身份验证?当用户输入用户和密码时是用那个
- 超难绘制表格问题,后台代码任意控制前台TABLE控件
- up有分的问题
- 问一个简单的问题!关于sql语句的
- DataList 控件在前台页面中可以写判断语句吗?
SQL语句的话确实比较难,明天有时间再来想想哈哈.
DataTable ds=new DataTable();
DataTable newds=ds.Copy();
newds.Columns.Add("c", Type.GetType("System.Decimal"));
Decimal total=0;
for(int i=0;i<newds.Rows.Count;i++)
{
newds.Rows[i]["c"]=total+Convert.ToDecimal(newds.Rows[i]["a"])-Convert.ToDecimal(newds.Rows[i]["b"]);
total=total+Convert.ToDecimal(newds.Rows[i]["a"])-Convert.ToDecimal(newds.Rows[i]["b"]);
}
当然也可以在存储过程序中用游标再计算.
(CASE WHEN C=(SELECT TOP 1 ID FROM abc ORDER BY ID) THEN 0 ELSE 10000 END)
======================
呵呵。其实我只是其中几个字段。还有根据月份。上月结存。本月应付,已付啥的都没发上来。
这些数据都是在程序里面处理后显示在页面上的。在表中根本不存在的。想了下。还是只能
用DataTable在程序里面内部实现了。不过针对数据量大效率确实是个问题。
PS:涉设到会计的东西还真他娘的难整。
update abc set c=(SELECT ISNULL((SELECT Sum(a-b) FROM abc t2 WHERE t2.id < abc.id),10000) + a - b)+
(CASE WHEN ID=(SELECT TOP 1 ID FROM abc ORDER BY ID) THEN 0 ELSE 10000 end)