跪求,sql命令实现分类汇总统计?
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253--1。 建表Create Table T( 地区 Varchar(10), 姓名 Varchar(10), 性别 Varchar(2), 名族 Varchar(10), 单位类型 Varchar(50)) --2。 插入测试数据Insert Into T Values('北京','张三','男','汉族','企业')Insert Into T Values('天津...全部
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253--1。
建表Create Table T( 地区 Varchar(10), 姓名 Varchar(10), 性别 Varchar(2), 名族 Varchar(10), 单位类型 Varchar(50)) --2。
插入测试数据Insert Into T Values('北京','张三','男','汉族','企业')Insert Into T Values('天津','李四','女','回族','公务员')Insert Into T Values('上海','王五','男','汉族','事业单位')Insert Into T Values('东北','周一','女','壮族','创业')Insert Into T Values('北京','李二','男','藏族','公务员') --3。
查询结果Declare @Forin Varchar(4000)='[男],[女]'Declare @Field Varchar(4000)='Isnull(男,0) AS 男,Isnull(女,0) As 女' --动态拼接名族Select @Forin=@Forin ',[' 名族 ']' ,@Field=@Field ',Isnull(' 名族 ',0) As ' 名族From(Select Distinct 名族 From T) S--动态拼接单位类型Select @Forin=@Forin ',[' 单位类型 ']' ,@Field=@Field ',Isnull(' 单位类型 ',0) As ' 单位类型From(Select Distinct 单位类型 From T) S --分别按地区性别,地区名族和地区单位类型分组统计人数,然后再行列转换Exec('Select 项目,' @Field ' From ( Select 地区 As 项目,性别 As 值,Count(*) As 人数 From T Group By 地区,性别 Union All Select 地区 As 项目,名族 As 值,COUNT(*) As 人数 From T Group By 地区,名族 Union All Select 地区 As 项目,单位类型 As 值,COUNT(*) As 人数 From T Group By 地区,单位类型) sPivot( Max(人数) For 值 in (' @Forin '))pvt')。
收起