--列转成行方式
--主要使用case when then (其实这里是创建新列,这里使用了三个case所能这里创建了三列:会计基础、计算机原理、数据结构与算法)
--详细解释:
--当表中每行记录开始时,
--查看列ctitle='会计基础'时,新的列内显示本行的score列内的值
--查看列ctitle='计算机原理'时,新的列内显示本行的score列内的值
--查看列ctitle='数据结构与算法'时,新的列内显示本行的score列内的值
select 学员姓名=s.sname,
case when ctitle='会计基础' then score end as 会计基础,
case when ctitle='计算机原理' then score end as 计算机原理,
case when ctitle='数据结构与算法' then score end as 数据结构与算法
from s
inner join sc on s.sid=sc.sid
inner join c on c.cid=sc.cid
--是面的查询已经基本实现了列变行的目的了,只是需要调整下,
--因为一个学员有一条记录就够了,现在有三条;并且每行都有空值,所以这里需要进行分组;
--可能大家注意到了,分组学员姓名就可以成为一行了,对于分值相加就可以了;
select 学员姓名=s.sname,
sum(case when ctitle='会计基础' then score end) as 会计基础,
sum(case when ctitle='计算机原理' then score end) as 计算机原理,
sum(case when ctitle='数据结构与算法' then score end )as 数据结构与算法
from s
inner join sc on s.sid=sc.sid
inner join c on c.cid=sc.cid
group by s.sname
--OK 成功!
--数据结构----------------------
--学员表
CREATE TABLE [dbo].[s](
[sid] [int] IDENTITY(1,1) NOT NULL, --主键递增+1
[sname] [nvarchar](50) NULL, --学员姓名
CONSTRAINT [PK_s] PRIMARY KEY CLUSTERED
(
[sid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IG…………………………………………………………………………
--列转成行方式
--主要使用case when then (其实这里是创建新列,这里使用了三个case所能这里创建了三列:会计基础、计算机原理、数据结构与算法)
--详细解释:
--当表中每行记录开始时,
--查看列ctitle='会计基础'时,新的列内显示本行的score列内的值
--查看列ctitle='计算机原理'时,新的列内显示本行的score列内的值
--查看列ctitle='数据结构与算法'时,新的列内显示本行的score列内的值
select 学员姓名=s.sname,
case when ctitle='会计基础' then score end as 会计基础,
case when ctitle='计算机原理' then score end as 计算机原理,
case when ctitle='数据结构与算法' then score end as 数据结构与算法
from s
inner join sc on s.sid=sc.sid
inner join c on c.cid=sc.cid
--是面的查询已经基本实现了列变行的目的了,只是需要调整下,
--因为一个学员有一条记录就够了,现在有三条;并且每行都有空值,所以这里需要进行分组;
--可能大家注意到了,分组学员姓名就可以成为一行了,对于分值相加就可以了;
select 学员姓名=s.sname,
sum(case when ctitle='会计基础' then score end) as 会计基础,
sum(case when ctitle='计算机原理' then score end) as 计算机原理,
sum(case when ctitle='数据结构与算法' then score end )as 数据结构与算法
from s
inner join sc on s.sid=sc.sid
inner join c on c.cid=sc.cid
group by s.sname
--OK 成功!
--数据结构----------------------
--学员表
CREATE TABLE [dbo].[s](
[sid] [int] IDENTITY(1,1) NOT NULL, --主键递增+1
[sname] [nvarchar](50) NULL, --学员姓名
CONSTRAINT [PK_s] PRIMARY KEY CLUSTERED
(
[sid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IG…………………………………………………………………………