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技能,无论是日常的数据查询还是复杂的业务逻辑处理,都能得心应手。在实际工作中,不断练习和探索,将理论知识转化为实践能力,是成为SQL高手...
SQL 行列转换 Pivot UnPivot SQL 行列转换是指将表格中的行数据转换为列数据,或者将列数据转换为行数据。Pivot 和 UnPivot 是 SQL Server 2005 中引入的两个语法,用于实现行列转换。 Pivot Pivot 语法的主要...
在实际的数据分析和报表制作过程中,我们经常需要将数据的列与行进行互换,这就是所谓的“SQL行列转换”。这种操作在处理汇总数据、创建透视表或者进行特定统计分析时尤其常见。以下我们将详细探讨SQL中的行列转换...
sql行列转换、一个字段包含另一个字段.sql
SQL 语句行列转换(附带数据库、表、视图操作) SQL 语句行列转换是数据库管理系统中的一种常见操作,它可以将数据从行转换为列,或者从列转换为行。在这个过程中,需要使用数据库管理语言(Database Management ...
在Oracle SQL中,行列转换是一种常见的数据操作需求,主要用于将数据表中的行转换为列,或将列转换为行,以此来满足不同的数据展示或分析需求。这种转换在处理多维度数据、汇总数据或是进行复杂查询时特别有用。下面...
一个简单的SQL 行列转换 Author: eaglet 在数据库开发中经常会遇到行列转换的问题,比如下面的问题,部门,员工和员工类型三张表,我们要统计类似这样的列表 部门编号 部门名称 合计 正式员工 临时员工 辞退员工 1 A...
在SQL中,行列转换是一种常见的数据操作,尤其在数据分析和报表生成时十分有用。这个案例主要涉及了如何将数据从行格式转换为列格式,针对的是一个学生成绩表,其中包含姓名、科目和成绩三个字段。我们将分别介绍...
### SQL Server 行列转换知识点解析 #### 一、行列转换概述 在处理数据库查询时,我们经常会遇到需要将表中的行数据转换为列数据的需求,这种操作通常被称为“行列转换”。例如,当我们需要汇总不同类别的数据并将...
### 通过SQL语句实现行列转换的几种方法 在日常工作中,我们经常需要处理的数据结构并不总是按照我们期望的方式组织的。特别是在制作自定义报表或进行产品开发时,经常会遇到需要将数据从一种布局转换到另一种布局...
在SQL中,行列转换是一种常见的数据操作,用于将表格数据从行格式转换为列格式,或者反之。在给定的PDF文件中,涉及到的具体知识点主要包括以下几个方面: 1. **CASE语句**:在SQL查询中,`CASE`语句常用于进行条件...
### SQL 2008 行列转换 (Pivot) 的动态实现 #### 知识点一:行列转换(Pivot)的概念与应用场景 在数据库查询中,有时我们需要将数据表中的行转换为列,或者将列转换为行,这种操作被称为行列转换。行列转换在报表...
java语言 数据库 mysql数据库 sql行列转换的例子 详解
在SQL中,行列转换是一种常见的数据操作,尤其在数据分析和报表生成时尤为关键。动态添加列则是在查询过程中根据特定条件或数据集自动生成列,这在处理不断变化的数据结构时非常有用。以下是对这些主题的详细解释: ...
### SQL语句实现表的行列转换,行转列,列转行 在处理数据库时,我们经常需要对数据进行各种变换以适应不同的分析需求。其中,“行列转换”就是一种非常实用的功能,它可以帮助我们将表中的行数据转换为列数据,...