It's a bit hard to understand what you are really trying to achieve without some more detailed explanation. However using my best guess I come out some suggestion for you so that you can try using my script as below.
1. Create test table:
CREATE TABLE tblClaims (
LossStatCode int
, ClaimCode varchar(10)
, CurrentLossReserve int
, DateReport DateTime)
2. Create test data:
-- 1,a1
INSERT INTO tblClaims VALUES (1,'a1',3,'2009-10-01')
INSERT INTO tblClaims VALUES (1,'a1',4,'2009-10-02')
INSERT INTO tblClaims VALUES (1,'a1',5,'2009-10-03')
INSERT INTO tblClaims VALUES (1,'a1',6,'2010-01-01')
INSERT INTO tblClaims VALUES (1,'a1',3,'2010-01-02')
INSERT INTO tblClaims VALUES (1,'a1',4,'2010-01-03')
-- 1,a2
INSERT INTO tblClaims VALUES (1,'a2',13,'2009-10-01')
INSERT INTO tblClaims VALUES (1,'a2',14,'2009-11-01')
INSERT INTO tblClaims VALUES (1,'a2',15,'2009-11-05')
INSERT INTO tblClaims VALUES (1,'a2',16,'2010-02-01')
INSERT INTO tblClaims VALUES (1,'a2',13,'2010-02-05')
INSERT INTO tblClaims VALUES (1,'a2',14,'2010-02-09')
-- 1,a3
INSERT INTO tblClaims VALUES (1,'a3',23,'2009-12-01')
INSERT INTO tblClaims VALUES (1,'a3',24,'2009-12-07')
INSERT INTO tblClaims VALUES (1,'a3',25,'2009-12-21')
INSERT INTO tblClaims VALUES (1,'a3',26,'2010-03-01')
INSERT INTO tblClaims VALUES (1,'a3',23,'2010-03-09')
INSERT INTO tblClaims VALUES (1,'a3',24,'2010-03-11')
3. Script to review:
SELECT LossStatCode,Convert(varchar(7),DateReport,121) [ReportMonth], a1 AS a1, a2 AS a2, a3 AS a3
FROM
(SELECT CurrentLossReserve, ClaimCode, LossStatCode, Convert(varchar(7),DateReport,121) [DateReport]
FROM tblClaims) p
PIVOT
(
SUM (CurrentLossReserve)
FOR ClaimCode IN
( a1,a2,a3)
) AS pvt
ORDER BY LossStatCode
4. Test result:
LossStat ReportMonth
Code a1 a2 a3
------------ ----------- ----------- ----------- -----------
1 2009-10 12 13 NULL
1 2009-11 NULL 29 NULL
1 2009-12 NULL NULL 72
1 2010-01 13 NULL NULL
1 2010-02 NULL 43 NULL
1 2010-03 NULL NULL 73
Try yourself even if this is not exactly what you wanted by changing columns a bit.