Sample datadeclare @USERS table (USERID varchar(20), [NAME] varchar(20))insert @USERSselect 'USER001', 'user1'union all select 'USER002', 'user2'declare @MONTHS table (MONTH_ID varchar(20), [NAME] VARCHAR(20),HRS_IN_MONTH INT)insert @MONTHSselect 'MONTH001', 'JAN-09', 176union all select 'MONTH002', 'FEB-09', 168declare @PROJECTS table(USERID varchar(20),PROJECT_ID varchar(20),MONTH_ID varchar(20), HRS int)insert @PROJECTSselect 'USER001', 'PRJ001', 'MONTH001', 50union all select 'USER001', 'PRJ001', 'MONTH002', 45union all select 'USER001', 'PRJ002', 'MONTH001', 40union all select 'USER002', 'PRJ001', 'MONTH001', 30
Queryselect a.[NAME], max(case when b.[NAME] = 'JAN-09' then b.HRS_IN_MONTH else 0 end) - sum(case when b.[NAME] = 'JAN-09' then c.HRS else 0 end),max(case when b.[NAME] = 'FEB-09' then b.HRS_IN_MONTH else 0 end) - sum(case when b.[NAME] = 'FEB-09' then c.HRS else 0 end)from @USERS ainner join (select USERID,MONTH_ID,SUM(HRS) as HRS from @PROJECTS group by USERID,MONTH_ID) c on a.USERID = c.USERIDinner join @MONTHS b on c.MONTH_ID = b.MONTH_IDgroup by a.[NAME]
ResultNAME JAN-09 FEB-09-------------------- ----------- -----------user1 86 123user2 146 0