--动态
DECLARE @SQL VARCHAR(8000)
SET @SQL='SELECT Pname'
SELECT @SQL=@SQL+'
,ISNULL(SUM(CASE WHEN Pmonth='+CAST(Pmonth AS VARCHAR(10))+' THEN [Prate*100] END),0)['+CAST(Pmonth AS VARCHAR(10))+'月]'
FROM TB GROUP BY Pmonth ORDER BY Pmonth
SET @SQL=@SQL+'FROM TB GROUP BY Pname'
PRINT @SQL
EXEC(@SQL)--静态方式
SELECT Pname
    ,ISNULL(SUM(CASE WHEN Pmonth=1 THEN [Prate*100] END),0)[1月]
    ,ISNULL(SUM(CASE WHEN Pmonth=2 THEN [Prate*100] END),0)[2月]
    ,ISNULL(SUM(CASE WHEN Pmonth=3 THEN [Prate*100] END),0)[3月]
FROM TB
GROUP BY PnameTB换成你的表名