set @FieldFZ='CurrMonth' set @FieldJS='BudgetMoney' set @TMPsql=''
BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON;
select @TMPsql=@TMPsql+',['+a.CurrMonth+']=sum(case '+@FieldFZ+' when '+a.CurrMonth+' then '+@FieldJS+' else 0 end)' from ( select '1' as CurrMonth union select '2' as CurrMonth UNION select '3' as CurrMonth union select '4' as CurrMonth union select '5' as CurrMonth union select '6' as CurrMonth union select '7' as CurrMonth union select '8' as CurrMonth union select '9' as CurrMonth union select '10' as CurrMonth union select '11' as CurrMonth union select '12' as CurrMonth ) a
--print @TMPsql --DECLARE @Curryear int -- ,@DeptID VARCHAR(6) -- --SET @Curryear=@year --set @DeptID=@DeptCode set @SQL=' select b.ItemName,a.feeid'+@TMPsql+' from dbo.FeeBudgetYear a,FeeItems b where a.FeeID=b.FeeID and a.CurrYear='''+@Curryear+''' and a.DeptCode='''+@DeptCode+''' group by a.feeid,b.ItemName'
--print
exec (@SQL) END
select b.ItemName,a.feeid,[1]=sum(case CurrMonth when 1 then BudgetMoney else 0 end),[10]=sum(case CurrMonth when 10 then BudgetMoney else 0 end),[11]=sum(case CurrMonth when 11 then BudgetMoney else 0 end),[12]=sum(case CurrMonth when 12 then BudgetMoney else 0 end),[2]=sum(case CurrMonth when 2 then BudgetMoney else 0 end),[3]=sum(case CurrMonth when 3 then BudgetMoney else 0 end),[4]=sum(case CurrMonth when 4 then BudgetMoney else 0 end),[5]=sum(case CurrMonth when 5 then BudgetMoney else 0 end),[6]=sum(case CurrMonth when 6 then BudgetMoney else 0 end),[7]=sum(case CurrMonth when 7 then BudgetMoney else 0 end),[8]=sum(case CurrMonth when 8 then BudgetMoney else 0 end),[9]=sum(case CurrMonth when 9 then BudgetMoney else 0 end) from dbo.FeeBudgetYear a,FeeItems b where a.FeeID=b.FeeID and a.CurrYear='2009' and a.DeptCode='BJ001' group by a.feeid,b.ItemName,b.ID