我已經獲得了一個任務來生成帳戶的欠款報告。通過結果集向後SQL Server循環
除了1列DaysInArrears,這是相當直接的。
我已經創建了一個查詢,計算每次預定付款的帳戶的欠款狀態。
此查詢填充的臨時表(#ArrearsAnalysis)的結果類似下面:從下列查詢填充
AgreementID DueDate AmountDue DueTD PaidTD FirstPaymentDue ArrearsStatus RN
184 2013-03-11 75.00 75.00 0.00 2013-03-11 1 1
184 2013-03-25 75.00 150.00 0.00 2013-03-11 1 2
184 2013-04-08 75.00 225.00 300.00 2013-03-11 0 3
184 2013-04-22 75.00 300.00 300.00 2013-03-11 0 4
184 2013-05-03 75.00 375.00 300.00 2013-03-11 1 5
184 2013-05-20 75.00 450.00 300.00 2013-03-11 1 6
我也有另一個臨時表(#ArrearsCheck):
INSERT INTO #ArrearsCheck
SELECT
AgreementID,
SUM(ArrearsStatus),
MAX(RN)
FROM
#ArrearsAnalysis
GROUP BY
AgreementID
然後,我需要做的是向後查看整個行,以確定何時落入最新拖欠(拖欠分數1)
因此對於考試上面我會預計03/05/2013的結果。
如果一個帳戶從未有過付款,那麼我會返回FirstPaymentDue日期。 如果一個賬戶從來沒有拖欠,那麼我只會返回NULL
這是我迄今爲止的查詢處理非付款人和非欠款,我只需要幫助與循環制定出上述(用* *突出顯示) ):
SELECT
DISTINCT(A.AgreementID),
CASE WHEN (C.ArrearsTally <= 0)
THEN NULL
ELSE (CASE WHEN (C.ArrearsTally = C.PaymentCount)
THEN NULL
*ELSE 0*
END)
END AS ArrearsDate
FROM
#ArrearsAnalysis AS A
LEFT OUTER JOIN
#ArrearsCheck AS C ON A.AgreementID = C.AgreementID
此查詢,然後我會把我的下一個查詢將計算今天與結果日期之間的差值(天)的結果。
嗨 行號是正確的,並且可以信任。 我遇到的問題是我需要協議陷入拖欠的最早日期,而不是最後一次。儘管如此,我只想知道0之後的最早的1,而不是最早的1,如果你明白我的意思。 我剛剛將代碼粘貼到我的查詢(上面)* *處,並添加到aa1.AgreementID = A.AgreementID中,結果如上所示,結果爲1900-01-01。 –
@Richard我添加了更新 – criticalfix