0

テーブルを設定しました。これは、製品に対する顧客の返済スケジュールです。

私のテーブルは次のフィールドで構成されています。

SaleID | PaymentDueDate | 料金

各セールに必要なものは次のとおりです。

SaleID | FirstPaymentDate | FirstPaymentValue | RegularPaymentValue | FinalPaymentvalue

各返済スケジュールには、次の特徴があります。

最初の支払い額は顧客が定義します。定期的および最終的な支払いは、残りの残高によって決まります。

例えば

セール=£200期間=14週間(14回の支払い)

最初の支払い=£50(x1)

通常の支払い=£12(x12)

最終支払い=£6(x1)

必要なものを取得する方法を教えてください。

追加:これまでのコード:

これは私がこれまでに達成したことですが、これは各販売の最初の支払いと最初の支払い日のみを取得します。

SELECT      
FP.SaleID, FP.FirstPaymentDate, RS.AmountDue AS FirstPayment 
FROM    
(       
SELECT SaleID, MIN(PaymentDueDate)AS FirstPaymentDate       
FROM RepaymentSchedule          
GROUP BY SaleID     
) AS FP 
LEFT OUTER JOIN
RepaymentSchedule AS RS ON FP.SaleID = RS.SaleID AND FP.FirstPaymentDate =   RS.PaymentDueDate ORDER BY RS.SaleID

追加:データサンプル:14週間で280ポンド

SaleID  PaymentDueDate            AmountDue
41      2012-08-29 00:00:00.000   120.00
41      2012-09-05 00:00:00.000   12.30
41      2012-09-12 00:00:00.000   12.30
41      2012-09-19 00:00:00.000   12.30
41      2012-09-26 00:00:00.000   12.30
41      2012-10-03 00:00:00.000   12.30
41      2012-10-10 00:00:00.000   12.30
41      2012-10-17 00:00:00.000   12.30
41      2012-10-24 00:00:00.000   12.30
41      2012-10-31 00:00:00.000   12.30
41      2012-11-07 00:00:00.000   12.30
41      2012-11-14 00:00:00.000   12.30
41      2012-11-21 00:00:00.000   12.30
41      2012-11-28 00:00:00.000   12.40

FinalPaymentValueはそれほど重要ではないと思います。

本当に私は定期的な支払いが何であるかを理解する方法を知る必要があります。

4

1 に答える 1

1

これはうまくいくはずです:

SELECT pd.saleid,
       pd.firstpaymentdate                               AS FirstPaymentDate,
       (SELECT amountdue
        FROM   repaymentschedule
        WHERE  saleid = pd.saleid
               AND paymentduedate = pd.firstpaymentdate) AS FirstPaymentValue,
       (SELECT TOP 1 amountdue
        FROM   repaymentschedule
        WHERE  saleid = pd.saleid
               AND paymentduedate <> pd.firstpaymentdate
               AND paymentduedate <> pd.lastpaymentdate) AS RegularPaymentValue,
       (SELECT amountdue
        FROM   repaymentschedule
        WHERE  saleid = pd.saleid
               AND paymentduedate = pd.lastpaymentdate)  AS FinalPaymentValue
FROM   (SELECT saleid,
               Min(paymentduedate) AS FirstPaymentDate,
               Max(paymentduedate) AS LastPaymentDate
        FROM   repaymentschedule
        GROUP  BY saleid) pd 

実際に見る

サンプル結果:

| | サレイド | 初回支払日 | 最初の支払い値 | 通常の支払い値 | 最終支払い値 |
-------------------------------------------------- -------------------------------------------------- ----
| | 41 | 2012 年 8 月 29 日 00:00:00+0000 | 120 | 12.3 | 12.4 |
于 2012-10-31T17:18:01.683 に答える