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)