The 500 values should really be 600 right?-- prepare sample datadeclare @sample table (caseid int, casestartdate varchar(7), paymentid int, paymentdate varchar(7), amountpaid int)insert @sampleselect 1, '01-2004', 11, '05-2004', 100 union allselect 1, '01-2004', 12, '10-2004', 200 union all select 1, '01-2004', 13, '01-2005', 300 union allselect 2, '01-2005', 21, '02-2005', 100 union allselect 2, '01-2005', 22, '01-2006', 200 union allselect 2, '01-2005', 23, '02-2006', 300 union allselect 3, '01-2006', 31, '04-2006', 100 union allselect 3, '01-2006', 32, '09-2006', 200 union allselect 3, '01-2006', 33, '12-2006', 300 union allselect 4, '01-2007', 41, '01-2007', 100 union allselect 4, '01-2007', 42, '01-2007', 200 union allselect 4, '01-2007', 43, '02-2007', 300-- Show the resultSELECT d.CaseID, d.CaseStartDate, SUM(CASE WHEN d.CSD + 5 > d.Today THEN NULL WHEN d.PD - d.CSD <= 5 THEN d.AmountPaid END) AS AmountPaid5, SUM(CASE WHEN d.CSD + 10 > d.Today THEN NULL WHEN d.PD - d.CSD <= 10 THEN d.AmountPaid END) AS AmountPaid10, SUM(CASE WHEN d.CSD + 15 > d.Today THEN NULL WHEN d.PD - d.CSD <= 15 THEN d.AmountPaid END) AS AmountPaid15FROM ( SELECT CaseID, CaseStartDate, CAST(LEFT(CaseStartDate, 2) AS INT) + 12 * CAST(RIGHT(CaseStartDate, 4) AS INT) AS CSD, CAST(LEFT(PaymentDate, 2) AS INT) + 12 * CAST(RIGHT(PaymentDate, 4) AS INT) AS PD, AmountPaid, 12 * DATEPART(year, GETDATE()) + DATEPART(month, GETDATE()) AS Today FROM @Sample ) AS dGROUP BY d.CaseID, d.CaseStartDate
Peter LarssonHelsingborg, Sweden