进行行转列下面是相关语法等
PIVOT 用于将列值旋转为列名(即行转列),在 SQL Server 2000可以用聚合函数配合CASE语句实现
PIVOT 的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P
注意:PIVOT、UNPIVOT是SQL Server 2005 的语法,使用需修改数据库兼容级别(在数据库属性->选项->兼容级别改为 90 )
SQL2008 中可以直接使用
完整语法:
table_source
PIVOT(
聚合函数(value_column)
FOR pivot_column
IN(<column_list>)
)
View Code
UNPIVOT 用于将列明转为列值(即列转行),在SQL Server 2000可以用UNION来实现
完整语法:
table_source
UNPIVOT(
value_column
FOR pivot_column
IN(<column_list>)
)
SELECT rq,
SUM(CASE WHEN shengfu='胜' THEN 1 ELSE 0 END) AS '胜',
SUM(CASE WHEN shengfu='负' THEN 1 ELSE 0 END) AS '负'
FROM 表名
GROUP BY rq;
/学生表:Member
字段名称 数据类型 说明
MID Char(10) 学生号,主键
MName Char(50) 姓名
课程表Class:
字段名称 数据类型 说明
FID Char(10) 课程,主键
FName Char(50) 课程名
成绩表:Score
字段名称 数据类型 说明
SID int 自动编号,主键,成绩记录号
FID Char(10) 课程号,外键
MID Char(10) 学生号,外键
Score int 成绩/
create table member(mid varchar(10) primary key,mname varchar(50))
create table class(fid varchar(10) primary key,fname varchar(50))
create table score(sid int primary key,fid varchar(10),mid varchar(10),score int)
go
insert into member values ('1001','张三')
insert into member values ('1002','李四')
insert into class values ('A1','数学')
insert into class values ('A2','化学')
insert into class values ('A3','政治')
insert into class values ('A4','历史')
insert into class values ('A5','语文')
insert into class values ('A6','物理')
insert into score values (1,'A1','1001',80)
insert into score values (2,'A1','1002',85)
insert into score values (3,'A2','1001',84)
insert into score values (4,'A4','1002',90)
go
declare @sql varchar(8000)
select @sql='select amname as 学生姓名'
select @sql=@sql+',sum(case cfname when '''+fname+''' then bscore else null end )as '+fname from class
select @sql=@sql+' from member a left join score b on amid=bmid left join class c on bfid=cfid group by amname'
print @sql
exec (@sql)
看看这个吧,以前我给他们写的
以上就是关于sql 查询出一列内容,如何让它成一行显示。全部的内容,包括:sql 查询出一列内容,如何让它成一行显示。、求一句mysql语句,不知道是不是用到行转列、SQL题目,行转列, 求高手解答,看清楚表中数据再解答等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)