现在的位置: 首页 > 综合 > 正文

交叉表 学习

2012年06月09日 ⁄ 综合 ⁄ 共 525字 ⁄ 字号 评论关闭
假设有四个学科 英 物 数 化
每个每个学科添加一个数据

CREATE TABLE [dbo].[成绩] (
 [id] [int] IDENTITY (1, 1) NOT NULL ,
 [姓名] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
 [学科] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
 [成绩] [int] NULL
) ON [PRIMARY]

看一下这个会理好理解
declare @a varchar(2000)
set @a=''
select @a=@a+','+cast(id as varchar) from 成绩
print @a

select 姓名,
sum(case 学科 when '英语' then 成绩 else 0 end) as 英语,
sum(case 学科 when '物理' then 成绩 else 0 end) as 物理,
sum(case 学科 when'数学' then 成绩 else 0 end) as 数学,
sum(case 学科 when'化学' then 成绩 else 0 end) as 化学
from 成绩 group by 姓名

 注: 把字段放到 when 后面可以进行多条件的判断
 sum(case when 学科<>'英语' then 成绩 else 0 end) as 不是英语,

抱歉!评论已关闭.