SQL 行列转换
以下在达梦数据库6.0中测试通过
wisgood 原创
例子中用到的两个表
课程表 course
Course(C#,Cname,T#) --C# --课程编号,Cname 课程名称,T# 教师编号
测试表 test
Test(C#,Property,Value) --C# --课程编号,Property 属性,Value 值
create table Course(C# varchar(10),Cname varchar(10),T# varchar(10))
insert into Course values('01' , '语文' , '02')
insert into Course values('02' , '数学' , '01')
insert into Course values('03' , '英语' , '03')
1: 从行转换成列
select c#,'cname' as property ,cname
from course
union
select c#,'t#' ,t#
from course
为了便于从列转换成行,我们把得到的数据存入test表中
insert into test(
select c#,'cname' as property ,cname
from course
union
select c#,'t#' ,t#
from course
)
Test表中数据变为
2: 从列转换成行
即把test表转换成course表的形式
第一种方法:通过连接的形式
select temp.c#,a.value as cname,b.value as t#
from (select distinct c# from test ) temp
left join test a on (temp.c#=a.c# and a.property='cname')
left join test b on (temp.c#=b.c# and b.property='t#')
第二种方法:通过case语句
select test.c#,
case when test.property='cname' then test.value else null end as [cname],
case when test.property='t#' then test.value else null end as [t#]
from (select distinct c# from test ) temp
join test on (test.c#=temp.c#)
此时得到的表如下,不符合条件,需要进一步处理
select test.c#,
max(case when test.property='cname' then test.value else null end ) as [cname],
max(case when test.property='t#' then test.value else null end )as [t#]
from (select distinct c# from test ) temp
join test on (test.c#=temp.c#)
group by test.c#
得到满足条件的行
- 大小: 13.6 KB
- 大小: 18.7 KB
- 大小: 18.7 KB
- 大小: 20.3 KB
分享到:
相关推荐
sql试题及答案,sql 行列转换,sql存储过程实例
sql行列转换扩展 明源内部学习资料
oracle sql行列转换
SQL行列转换
SQL行列转换 Pivot UnPivot
sql行列转换、一个字段包含另一个字段.sql
sql行列转换[借鉴].pdf
SQL语句行列转换(附带数据库、表、视图操作) ,不错的文档。
一个简单的SQL 行列转换 Author: eaglet 在数据库开发中经常会遇到行列转换的问题,比如下面的问题,部门,员工和员工类型三张表,我们要统计类似这样的列表 部门编号 部门名称 合计 正式员工 临时员工 辞退员工 1 A...
本人在工作中遇到了涉及到数据库行列之间相互转换的问题,在网上搜索了很久也没有一个比较完整的解释,通过本人自己的摸索测试,整理出来了Oracle中SQL语句行列之间相互转换的资料,大家可以下载学习。
sql server 行列转换.
假设有张学生成绩表(tb)如下: Name Subject Result 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 */ ----------------------------------------------------------------...
动态 实现 SQL 2008行列转换的pivot
1. 列转行 2. 行转列 3. 多列转换成字符串 4. 多行转换成字符串 5. 字符串转换成多列 6. 字符串转换成多行
java语言 数据库 mysql数据库 sql行列转换的例子 详解
Sql语句实现表的行列转换,行转列,列转行
sqlserver行列转换,实现行列转换,全部脚本,测试通过