sqlserver2008动态行转列有关问题

sqlserver2008动态行转列问题
数据库的表为:  
  id 助产机构 年龄

1 XXX 16

2 xxxx 15

·····

10 xx 67


要求写一条sql语句显示:id、助产机构、 年龄(年龄的值本来是纵向排列的,这里我要求横向排列)如下图:
序号 助产机构 18岁 19岁 20岁 31岁 。。。。。。。。。总计
1  
2
3
。。。。。。。。。。。。。。。。 

查询表MOC_PRENATAL_EXAM
按助产机构,年龄分组,统计每个助产机构在不同年龄的人数


建表语句
create table MOC_PRENATAL_EXAM (
id int,
HOSPITAL_ID varchar(20) ,
MENARCHE int
)
HOSPITAL_ID助产机构 MENARCHE年龄 



------解决方案--------------------
SQL code
declare @sql varchar(8000)
set @sql = 'select 助产机构 '
select @sql = @sql + ' , sum(case 年龄 when ' + cast(年龄 as varchar) + ' then 1 else 0 end) [' + cast(年龄 as varchar) + '岁]'
from (select distinct 年龄 from MOC_PRENATAL_EXAM ) as a
set @sql = @sql + ',count(1) 总计 from MOC_PRENATAL_EXAM  group by 助产机构'
exec(@sql)