有一张表,表名为stu信息如下示name grade sex national
周1 一年级 男 汉族
周2 一年级 男 汉族
周3 一年级 女 少数民族
周4 二年级 男 汉族
周5 二年级 女 少数民族
周6 二年级 男 少数民族
周7 一年级 女 汉族
周8 二年级 男 汉族
周9 二年级 女 少数民族
周10 三年级 男 汉族
周11 一年级 女 少数民族
周12 一年级 男 汉族
周13 三年级 女 少数民族
要求查询结果如下示分类 一年级 二年级 三年级
女 ? ? ?
少数民族 ? ? ?
问号代表的是人数。希望大家帮忙写一下。
周1 一年级 男 汉族
周2 一年级 男 汉族
周3 一年级 女 少数民族
周4 二年级 男 汉族
周5 二年级 女 少数民族
周6 二年级 男 少数民族
周7 一年级 女 汉族
周8 二年级 男 汉族
周9 二年级 女 少数民族
周10 三年级 男 汉族
周11 一年级 女 少数民族
周12 一年级 男 汉族
周13 三年级 女 少数民族
要求查询结果如下示分类 一年级 二年级 三年级
女 ? ? ?
少数民族 ? ? ?
问号代表的是人数。希望大家帮忙写一下。
sum(case when [grade]='一年级' then 1 else 0 end) as 一年级,
sum(case when [grade]='二年级' then 1 else 0 end) as 二年级,
sum(case when [grade]='三年级' then 1 else 0 end) as 三年级
from TB
group by sex,[national]
参考着改 要是还不会那就 搜索行列转换
sum(case when [grade]='一年级' then 1 else 0 end) as 一年级,
sum(case when [grade]='二年级' then 1 else 0 end) as 二年级,
sum(case when [grade]='三年级' then 1 else 0 end) as 三年级
from TB
group by sex
union all
select national as 类别,
sum(case when [grade]='一年级' then 1 else 0 end) as 一年级,
sum(case when [grade]='二年级' then 1 else 0 end) as 二年级,
sum(case when [grade]='三年级' then 1 else 0 end) as 三年级
from TB
group by national
-- Author :fredrickhu(小F,向高手学习)
-- Date :2011-03-25 16:13:46
-- Verstion:
-- Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Enterprise Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([name] varchar(4),[grade] varchar(6),[sex] varchar(2),[national] varchar(8))
insert [tb]
select '周1','一年级','男','汉族' union all
select '周2','一年级','男','汉族' union all
select '周3','一年级','女','少数民族' union all
select '周4','二年级','男','汉族' union all
select '周5','二年级','女','少数民族' union all
select '周6','二年级','男','少数民族' union all
select '周7','一年级','女','汉族' union all
select '周8','二年级','男','汉族' union all
select '周9','二年级','女','少数民族' union all
select '周10','三年级','男','汉族' union all
select '周11','一年级','女','少数民族' union all
select '周12','一年级','男','汉族' union all
select '周13','三年级','女','少数民族'
--------------开始查询--------------------------
select
sex,[national],
sum(case when [grade]='一年级' then 1 else 0 end) as 一年级,
sum(case when [grade]='二年级' then 1 else 0 end) as 二年级,
sum(case when [grade]='三年级' then 1 else 0 end) as 三年级
from
tb
group by
sex,[national]----------------结果----------------------------
/* sex national 一年级 二年级 三年级
---- -------- ----------- ----------- -----------
男 汉族 3 2 1
女 汉族 1 0 0
男 少数民族 0 1 0
女 少数民族 2 2 1(4 行受影响)*/