在做一些数据分析与数据展示时,经常会遇到行转列,列转行的需求,今天就来总结下:
在开始之前,先来创建一个临时表,并且写入一些测试数据:
/* 第一步:创建临时表结构 */ CREATE TABLE #Student --创建临时表 ( StuName nvarchar(20), --学生名称 StuSubject nvarchar(20),--考试科目 StuScore int --考试成绩 ) DROP TABLE #Student --删除临时表 SELECT * FROM #Student --查询所有数据 /* 第二步:写入测试数据 */ --张三 INSERT INTO #Student(StuName,StuSubject,StuScore) values ('张三','语文',80); INSERT INTO #Student(StuName,StuSubject,StuScore) values ('张三','数学',75); INSERT INTO #Student(StuName,StuSubject,StuScore) values ('张三','英语',65); --李四 INSERT INTO #Student(StuName,StuSubject,StuScore) values ('李四','语文',36); INSERT INTO #Student(StuName,StuSubject,StuScore) values ('李四','数学',56); INSERT INTO #Student(StuName,StuSubject,StuScore) values ('李四','英语',38); --王五 INSERT INTO #Student(StuName,StuSubject,StuScore) values ('王五','语文',69); INSERT INTO #Student(StuName,StuSubject,StuScore) values ('王五','数学',80); INSERT INTO #Student(StuName,StuSubject,StuScore) values ('王五','英语',78); --赵六 INSERT INTO #Student(StuName,StuSubject,StuScore) values ('赵六','语文',80); INSERT INTO #Student(StuName,StuSubject,StuScore) values ('赵六','数学',80); INSERT INTO #Student(StuName,StuSubject,StuScore) values ('赵六','英语',95);