按月度 分列 对同类科目汇总统计数据。请高人指点

按月份 分列 对同类科目汇总统计数据。请高人指点!
按月度 分列 对同类科目汇总统计数据。请高人指点

最后统计的结果要求如下:
scode      sname             201401                        201402                       201403                      201404       ...........
500101 直接材料   100.00                         10000.00
500102 直接人工   7436.00                  20000.00
500103 制造费用  1000.00                  30000.00
510101 劳保费           501.00                          40500.00
510102 招待费          11111.00                  55500.00


注:月份是变动的。

具体的表(totalprice)结构与字段如下:
SCode                char(20)
SName              char(50)
YSMonth            char(20)
Price                   float

SQL语句如下:
select t1.SCode,t1.SName,t1.YSMonth,t1.price from  totalprice  t1 where SCode is not null
order by t1.YSMonth,t1.SCode,t1.SName

请高人指点!
最好能按月份变动
或月份固定不变各一份指引。
------解决思路----------------------
CREATE PROCEDURE P_Query201404
@StartDate char(20),
@EndDate char(20)
AS
BEGIN
DECLARE @SQL NVARCHAR(MAX)
SET @SQL='SELECT SCode,SName'
SELECT @SQL=@SQL+',SUM(CASE WHEN YSMonth='''+YSMonth+'''THEN price END)['+YSMonth+']'
FROM(
SELECT CONVERT(VARCHAR(6),DATEADD(MONTH,number,RTRIM(@StartDate)+'01'),112)YSMonth
FROM master..spt_values
WHERE type='P' AND number<=DATEDIFF(MONTH,RTRIM(@StartDate)+'01',RTRIM(@EndDate)+'01')
)T
SET @SQL=@SQL+',SUM([Price])[合计]'
SET @SQL=@SQL+'FROM[totalprice]
Where SCode is not null AND YSMonth BETWEEN'''+@StartDate+'''AND '''+@EndDate+'''
GROUP BY SCode,SName'
EXEC(@SQL)
END
已处理