我需要一些建议来处理查询。我可以在前端应用程序中处理这个,但是,由于设计,我必须在后端实现它。我有以下
CREATE TABLE [dbo].[openitems](
[id] [varchar](8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[type] [char](5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[date] [smalldatetime] NULL,
[amount] [decimal](9, 2) NULL,
[daysOpen] [smallint] NULL,
[balance] [decimal](9, 2) NULL
) ON [PRIMARY]
insert into openitems values('A12399','INV','2008-12-05',491.96,123)
insert into openitems values('A12399','INV','2008-12-12',4911.37,116)
insert into openitems values('A12399','INV','2008-12-05',3457.69,109)
上表包含客户的所有未结发票。我需要从最早的发票(表中的 daysOpen 列)开始对这些发票进行付款。因此,如果我有 550.00 美元的付款,我将首先将其应用于 123 天的发票,即 491.96 美元 - 500 美元(剩下 8.04 美元用于下一张发票......等等),然后更新该记录(余额表中的列)到 0.00 并移动到下一个并应用剩余的。那将是 4911.37 美元 - 8.04 美元,剩下 4903.33 美元。由于没有余额可供应用,因此循环退出。
余额栏现在应该是
0 4903.33 3457.69
注意:我需要为表中的所有客户(大约 10,000 个)执行此操作。一个客户平均有大约 20 张未结发票。
谢谢