MS SQL Server 2016使用游标插入自上次日期以来重复发生的日期

时间:2017-12-06 21:12:42

标签: sql sql-server date cursor

我有一个发票表,供每个月开具发票的客户使用。每个月的产品/价格相同。我已经为每个客户(他们最后一次开发票)获得了最新的行,并且我用光标浏览了数据。我需要检查上一个发票月份的时间以及新发票是否到期,添加下一个月日期的新行。如果最后一个发票日期是2个月前,那么我需要添加2个条目,例如,如果最后一个日期是10月4日,我将需要在11月4日和12月4日添加一行。我不会在'我想添加尚未到期的任何细节。

OPEN @getid
FETCH NEXT
FROM 
    @getid INTO @invoiceDate, @clientAccountID, @clientID, @CompanyName, @CompanyRole, @Charge, @receivedDDForm
WHILE @@FETCH_STATUS = 0
BEGIN

     INSERT INTO Invoices
     (invoiceDate, clientAccountID, clientID, CompanyName, CompanyRole, Charge, receivedDDForm, paymentReceived)
     SELECT 
     DATEADD(MONTH, 1, Convert(date, @invoiceDate)), @clientAccountID, @clientID, @CompanyName, @CompanyRole, @Charge, @receivedDDForm, 0

     --This is where I need help--      
     WHERE
     GETDATE() > @invoiceDate 
     OR
     DATEADD(MONTH, 1, Convert(date, @invoiceDate)) <= GETDATE()        

    FETCH NEXT

    FROM @getid INTO @invoiceDate, @clientAccountID, @clientID, @CompanyName, @CompanyRole, @Charge, @receivedDDForm
END

CLOSE @getid
DEALLOCATE @getid

0 个答案:

没有答案