我有如下表:使用上一行值
TABLE A (CUSTOMER_LOAN):
=============================
CUSTOMER_ID TOTAL_LOAN_AMOUNT
XXX 100,000.00
YYY 200,000.00
TABLE B (SCHEDULE):
=========================================
CUSTOMER_ID SCHEDULE_DATE SCHEDULE_AMOUNT
XXX 20170102 30,000
XXX 20170302 10,000
XXX 20170602 15,000
YYY 20170203 50,000
YYY 20170403 100,000
YYY 20170703 30,000
我需要的是得到以下的輸出:
EXPECTED REPORT OUTPUT :
=============================
CUSTOMER_ID SCHEDULE_DATES SCHEDULE_PRINCIPAL
XXX 20170102/20170302/20170602 70,000/60,000/45,000
YYY 20170203/20170403/20170703 150,000/50,000/20,000
的SCHEDULE_PRINCIPAL是按(傑出校長 - SCHEDULE_AMOUNT)計算。 即客戶XXX,(70,000 = 100,000 - 30,000)/(60,000 = 70000 - 10,000)/(45,000 = 60,000 - 15000)
下面是我的查詢:
SELECT A.CUSTOMER_ID
, STUFF((SELECT '/' + SCHEDULE_DATE FROM SCHEDULE B
WHERE B.CUSTOMER_ID = A.CUSTOMER_ID
FOR XML PATH('')), 1, 1, '') AS SCHEDULE_DATES
, STUFF((SELECT '/' + (A.TOTAL_LOAN_AMOUNT - CAST(B.SCHEDULE_AMOUNT AS MONEY)) FROM SCHEDULE B
WHERE B.CUSTOMER_ID = A.CUSTOMER_ID
FOR XML PATH('')), 1, 1, '') AS SCHEDULE_PRINCIPAL
FROM CUSTOMER_LOAN A
正如你所看到的, SCHEDULE_PRINCIPAL錯誤,因爲TOTAL_LOAN_AMOUNT是常量,計算(A.TOTAL_LOAN_AMOUNT - CAST(B.SCHEDULE_AMOUNT AS MONEY))未在下一行累積。
任何方式來做這樣的計算,可以輸出結果,如預期的報告?我正在使用SQL Server 2012.任何幫助將不勝感激。
對不起,我更新了查詢。 B.SCHEDULE_AMOUNT應該作爲貨幣CAST。然後,我使用您的查詢,系統返回以下錯誤:RANGE窗口框架的ORDER BY列表不能包含LOB類型的表達式。 – TinySimonH
我更新了我的查詢,但不應該在varchar(max)列中存儲日期 –
謝謝!您的查詢解決了我的問題。 – TinySimonH