Contract SUM is 50850, not 48200! Brush up your basic math skills.-- prepare test datadeclare @t table (PRODUCT_CATEGORY_ID tinyint, PRODUCT_CATEGORY_NAME varchar(9), PRODUCT_CATEGORY_AMOUNT money, COMMISSION_MONTH datetime)set dateformat dmyinsert @tselect 1, 'Product A', 54985, '1/10/2004' union allselect 1, 'Product A', 349050, '1/09/2004' union allselect 1, 'Product A', 167645, '1/08/2004' union allselect 2, 'Product B', 65206.94, '1/08/2006' union allselect 2, 'Product B', 258028.73, '1/07/2006' union allselect 2, 'Product B', 246538.22, '1/06/2006' union allselect 7, 'LINE', 283506.69, '1/08/2006' union allselect 7, 'LINE', 314186.78, '1/07/2006' union allselect 7, 'LINE', 260485.38, '1/06/2006' union allselect 7, 'LINE', 319169.2, '1/04/2006' union allselect 7, 'LINE', 332763.64, '1/03/2006' union allselect 7, 'LINE', 329983.35, '1/08/2004' union allselect 7, 'LINE', 319307.68, '1/07/2004' union allselect 9, 'CONTRACT', 25950, '1/08/2006' union allselect 9, 'CONTRACT', 20350, '1/07/2006' union allselect 9, 'CONTRACT', 4550, '1/06/2006' union allselect 9, 'CONTRACT', 248000, '1/04/2006'-- do the workselect t.PRODUCT_CATEGORY_ID, t.PRODUCT_CATEGORY_NAME, t.PRODUCT_CATEGORY_AMOUNT, t.COMMISSION_MONTH, case when w.product_category_id is null then '' else cast(t.PRODUCT_CATEGORY_ID as varchar) + ' ' + t.PRODUCT_CATEGORY_NAME + ' ' + cast((select sum(r.PRODUCT_CATEGORY_AMOUNT) from @t r where r.product_category_id = t.product_category_id and r.commission_month >= w.peso) as varchar) endfrom @t tleft join ( select product_category_id, dateadd(month, -2, max(COMMISSION_MONTH)) peso from @t group by product_category_id ) w on w.product_category_id = t.product_category_id and w.peso = t.COMMISSION_MONTH
Peter LarssonHelsingborg, Sweden