Sql 计算期间之间的金额
请帮忙 如何按期间计算已付款的金额,期间介于付款之间。 因此,在第二次放款325中,我必须获得5 在第三阶段,我必须获得7分,以此类推Sql 计算期间之间的金额,sql,sql-server,Sql,Sql Server,请帮忙 如何按期间计算已付款的金额,期间介于付款之间。 因此,在第二次放款325中,我必须获得5 在第三阶段,我必须获得7分,以此类推 if(OBJECT_ID('tempdb..#Amount') IS NOT NULL) drop table #Amount create table #Amount ( Date smalldatetime, Disbursement decimal(18,2), PayedMan
if(OBJECT_ID('tempdb..#Amount') IS NOT NULL)
drop table #Amount
create table #Amount
(
Date smalldatetime,
Disbursement decimal(18,2),
PayedManualAmount decimal(18,2),
ForPayAmount decimal(18,2)
)
INSERT INTO #AmountForPay(Date,Disbursement,PayedManualAmount,ForPayAmount)
VALUES
('20121226', 675.00 ,NULL ,8.37),
('20121226', NULL ,5.00 ,0.00),
('20121227', NULL ,NULL ,0.00),
('20121228', NULL ,NULL ,0.00),
('20130323', NULL ,NULL ,0.00),
('20130324', NULL ,NULL ,0.00),
('20130325', NULL ,NULL ,0.00),
('20130326', NULL ,NULL ,0.00),
('20130327', 325.00 ,NULL ,4.03),--ForPayAmount = SUM(PayedManualAmount) between 2012-12-26 and 2013-03-26 = 5
('20130328', NULL ,4 ,0.00),
('20130329', NULL ,NULL ,0.00),
('20140228', NULL ,3 ,0.00),
('20140301', NULL ,NULL ,0.00),
('20140302', 500.00 ,NULL ,6.20), --ForPayAmount = SUM(PayedManualAmount) between 2013-03-27 and 2014-03-01 = 7
这没有经过测试,我甚至不知道它在语法上是否正确,因为我在SSMS中写下了它,但类似的东西应该可以工作:
DECLARE @LastProcessedID INT
SELECT @LastProcessedID = 0
WHILE 1 = 1 BEGIN
SELECT TOP 1 @CurrentID = ID
FROM #Amount
WHERE ID > @CurrentID
AND Disbursement IS NOT NULL
ORDER BY ID
IF @@RowCount = 0 BREAK;
UPDATE #Amount
SET ForPayAmount = (SELECT SUM(PayedManualAmount)
FROM #Amount
WHERE ID < @CurrentID
AND ID > @LastProcessedID)
WHERE ID = @CurrentID
SELECT @LastProcessedID = @CurrentID
END
请注意,您需要在临时表中添加一个ID列。你也许可以用你的日期栏来回答这个问题,但我个人只想添加一个身份栏。你的问题需要重新审视。两次支付之间没有任何意义。你应该说在a和b之间。第二笔放款325中的325来自哪里。。。没问题。如果这解决了你的问题,你能接受它作为答案吗?