我有一张表,有五栏说明,期初余额,销售,销售退回,往来款。
我想合并期初余额,销售作为“借方”和销售退回,收款作为“贷方”。
余额栏中借方发生额加贷方发生额减的“余额”列名称如何计算流水合计?
我的尝试是
选择描述(invoiceamount+openingbalance)作为“dabit”,(dramount+salereturn+baddebAmount)作为“credit”,sum(sale+openingbalance salereturn recipt)over(order by id)作为表名中的runningagetotal
2条答案
按热度按时间ogq8wdun1#
你好像在描述
coalesce()
和一个窗口函数:jvidinwx2#
以创建临时列表为代价,linq版本如下:
假设您的原始数据源来自sql数据库,那么您首先需要将数据放入内存,例如
注意需要对查询进行排序,以确保以正确的顺序返回日期。您没有提到任何其他字段,所以我假设有一个名为date的字段可以使用。
一旦内存中有了数据,就可以添加balance列,即
因为您要引入一个局部变量并在linq语句外部对其进行初始化,所以除非余额被重置为零,否则查询不能被枚举两次。你可以通过使用
.ToList();
或者.ToArray();