Join 需要SQL内部子查询计算帮助
我想从TotalAmount-AmmonReceived=下一行的余额计算余额运行时 TotalAmont(实际上是上一次运行时计算的余额)应该在这里-amonUnreceived=balance,依此类推 这是我的查询,它不递减TotalAmountJoin 需要SQL内部子查询计算帮助,join,subquery,correlated-subquery,inner-query,Join,Subquery,Correlated Subquery,Inner Query,我想从TotalAmount-AmmonReceived=下一行的余额计算余额运行时 TotalAmont(实际上是上一次运行时计算的余额)应该在这里-amonUnreceived=balance,依此类推 这是我的查询,它不递减TotalAmount select ID, RecvDate, BillNo, ModeofPayment, (Select Item_name from Product where ID = CampusRec
select ID,
RecvDate,
BillNo,
ModeofPayment,
(Select Item_name from Product where ID = CampusRecovery.ItemID) as Item,
SUM(AmountReceived) as AmountReceived,
(Select CampusName from Campus where CampusID = CampusRecovery.CampusID) as Campus,
IsNull((select SUM(Inventory_Out.TotalAmount)
from Inventory_Out
where Inventory_Out.BillNo = CampusRecovery.BillNo),0) as TotalAmmount,
IsNull((select SUM(Inventory_Out.TotalAmount)
from Inventory_Out
where Inventory_Out.BillNo = CampusRecovery.BillNo),0) - SUM(AmountReceived) as Balance
from CampusRecovery
where RecvDate Between @startdt and @enddt
and CampusID = 2
Group By CampusRecovery.CampusID,
CampusRecovery.ItemID,
CampusRecovery.RecvDate,
CampusRecovery.BillNo,
CampusRecovery.ModeofPayment,
CampusRecovery.ID
能否在表格定义中添加一些示例数据和预期输出?这将使计算更加容易,包括样本数据和您的预期输出。根据您所描述的内容,您需要窗口函数。@JeremyC。请看我的最新帖子,我已经插入了解释这个问题的图片issue@VladimirOselsky请看我的更新帖子,我已经插入了解释问题的图片。最后一行的总金额应该是240,而balence是40?在这种情况下,您没有给我们正确的语句,因为我们需要您的insert语句
select cr.BillNum, cr.DelievryDate,cr.AmmountReceived,(select TotalAmmount from InventoryOut where InventoryOut.BillNum = cr.BillNum) as TotalBill,
(select TotalAmmount -
(select Sum(AmmountReceived) from CampusRecovery ch where ch.BillNum = io.BillNum )
from InventoryOut io where io.BillNum = cr.BillNum )--- sum(cr.AmmountReceived)
as Balance
from CampusRecovery cr where CampusID = 1
group by
cr.BillNum,
cr.DelievryDate,
cr.BillNum,
cr.AmmountReceived