- 6
- 0
- 约6.98万字
- 约 17页
- 2016-12-03 发布于河南
- 举报
sql行列转换方整理
sql行列转换方法整理
1.--行列转换
原表: 姓名 科目 成绩
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 物理 82
李四 英语 90
李四 政治 70
王五 英语 90
转换后的表: 姓名 数学 物理 英语 语文 政治
李四 0 82 90 85 70
王五 0 0 90 0 0
张三 90 85 0 80 0
实例:
create table cj --创建表cj
(
ID Int IDENTITY (1,1) not null, --创建列ID,并且每次新增一条记录就会加1
Name Varchar(50),
Subject Varchar(50),
Result Int,
primary key (ID) --定义ID为表cj的主键
);
--Truncate table cj
--Select * from cj
Insert into cj
Select 张三,语文,80 union all
Select 张三,数学,90 union all
Select 张三,物理,85 union all
Select 李四,语文,85 union all
Select 李四,物理,82 union all
Select 李四,英语,90 union all
Select 李四,政治,70 union all
Select 王五,英语,90
--行列转换
Declare @sql varchar(8000)
Set @sql = Select Name as 姓名
Select @sql = @sql + ,sum(case Subject when +Subject+ then Result else 0 end) [+Subject+]
from (select distinct Subject from cj) as cj --把所有唯一的科目的名称都列举出来
Select @sql = @sql+ from cj group by name
Exec (@sql)
2. 行列转换--合并
原表: 班级 学号
1 1
1 2
1 3
2 1
2 2
3 1
转换后的表: 班级 学号
1 1,2,3
2 1,2
3 1
实例:
Create table ClassNo --创建表ClassNo
(
ID Int IDENTITY(1,1) not null, --创建列ID,并且每次新增一条记录就会加1
Class Varchar(50), --班级列
Number Varchar(50), --学号列
Primary Key(ID) --定义ID为表ClassNo的主键
);
--Truncate Table ClassNo
--Select * from ClassNo
Insert Into ClassNo
Select 1,1 Union all
Select 1,2 Union all
Select 1,3 Union all
Select 2,1 Union all
Select 2,2 Union all
Select 3,1
创建一个合并的函数
--Dr
您可能关注的文档
最近下载
- 2026年春季学期幼儿园保教工作计划.docx VIP
- 2025年贵金属首饰与宝玉石检测员(中级)考试模拟试题与答案解析.docx VIP
- 2025年上海市中考历史试题卷(含答案).docx
- 2026年河北省职业院校技能大赛中职组艺术设计赛项样题第二套.docx VIP
- T_GDTEX 17-2021 纺织企业水重复利用率计算方法.docx VIP
- 纺织企业水的余热回收率和利用率计算方法.docx VIP
- SMT巡检记录表模板.xlsx VIP
- (人教2024版)数学七年级下册全册大单元教学设计(新教材).docx
- the real 10 algorithms that dominate our world真正主导世界实际算法.pdf
- GB/T 45251-2025互联网金融 个人网络消费信贷 贷后催收风控指引.pdf
原创力文档

文档评论(0)