首页 > 代码库 > SQL列转行

SQL列转行

典型实例

一、行转列

1、建立表格

IF OBJECT_ID(tb) IS NOT NULL DROP TABLE tbgoCREATE TABLE tb(姓名 VARCHAR(10),课程 VARCHAR(10),分数 INT)insert into tb VALUES (张三,语文,74)insert into tb VALUES (张三,数学,83)insert into tb VALUES (张三,物理,93)insert into tb VALUES (李四,语文,74)insert into tb VALUES (李四,数学,84)insert into tb VALUES (李四,物理,94)goSELECT * FROM tbgo

姓名       课程       分数

---------- ---------- -----------

张三       语文        74

张三       数学        83

张三       物理        93

李四       语文        74

李四       数学        84

李四       物理        94

 

2、使用SQL Server 2000静态SQL

SELECT 姓名, max(CASE 课程 WHEN语文 THEN 分数 ELSE 0 END) 语文, max(CASE 课程 WHEN数学 THEN 分数 ELSE 0 END) 数学, max(CASE 课程 WHEN物理 THEN 分数 ELSE 0 END) 物理FROM tbGROUP BY 姓名

3、使用SQL Server 2005静态SQL

SELECT * FROM tb pivot( MAX(分数) FOR 课程 IN (语文,数学,物理))a

 

SQL列转行