SQL data auswählen

Ich habe einen Tisch eingerichtet, es ist ein Kunden Rückzahlungsplan für ein Produkt.

Mein Tisch besteht aus folgenden Feldern:

SaleID PaymentDueDate | Offener Betrag

Was ich für jeden Verkauf brauche, ist:

SaleID FirstPaymentDate | ErstePaymentValue | RegularPaymentValue | FinalPaymentvalue

Jeder Rückzahlungsplan hat folgende Merkmale:

Der erste Zahlungsbetrag wird vom Kunden festgelegt. Regelmäßige und endgültige Zahlungen werden durch den Restbetrag diktiert.

z.B

Verkauf = £ 200 Laufzeit = 14 Wochen (14 Zahlungen)

Erste Zahlung = £ 50 (x1)

Reguläre Zahlung = £ 12 (x12)

Endzahlung = £ 6 (x1)

Bitte können Sie beraten, wie ich abrufen kann was ich brauche.

ZUSATZ: Code so weit:

Dies ist, was ich bisher erreicht habe, aber das bekommt mir nur die erste Zahlung und den ersten Zahlungsdatum für jeden Verkauf:

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 

ZUSATZ: databeispiel: £ 280 über 14 Wochen

 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 

Ich denke, die FinalPaymentValue ist nicht zu entscheidend.

Wirklich muss ich nur wissen, wie man herausarbeitet, was die regelmäßige Zahlung ist.

Das sollte funktionieren:

 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 

Sehen Sie es in Aktion

Beispiel Ergebnis:

  |  SALEID |  FIRSTPAYMENTDATE |  FIRSTPAYMENTVALUE |  REGULARPAYMENTVALUE |  FINALPAYMENTVALUE |
 -------------------------------------------------- -------------------------------------------------- ----
 |  41 |  August, 29 2012 00: 00: 00 + 0000 |  120 |  12,3 |  12.4 |