普通行列转换:
-------------------------纵表转横表--------------------------------------------
Name Subject Result
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
转换成:
姓名 语文 数学 物理
---------- ----------- ----------- -----------
李四 74 84 94
张三 74 83 93
<!--EndFragment-->
select name 姓名,
max(case subject when '语文' then result else 0 end) 语文,
max(case subject when '数学' then result else 0 end) 数学,
max(case subject when '物理' then result else 0 end) 物理
from tb
group by name
<!--EndFragment-->
/*加个平均分,总分
姓名 语文 数学 物理 平均分 总分
---------- ----------- ----------- ----------- ------------- ---------
李四 74 84 94 84.00 252
张三 74 83 93 83.33 250
*/
<!--EndFragment-->
select name 姓名,
max(case subject when '语文' then result else 0 end) 语文,
max(case subject when '数学' then result else 0 end) 数学,
max(case subject when '物理' then result else 0 end) 物理,
cast(avg(result*1.0) as decimal(18,2)) 平均分,
sum(result) 总分
from tb
group by name
<!--EndFragment-->
<!--EndFragment-->
-------------------------横表转纵表--------------------------------------------
姓名 语文 数学 物理
张三 74 83 93
李四 74 84 94
想变成
Name Subject Result
---------- ------- -----------
李四 语文 74
李四 数学 84
李四 物理 94
张三 语文 74
张三 数学 83
张三 物理 93
select * from
(
select 姓名 as Name , Subject = '语文' , Result = 语文 from tb1
union all
select 姓名 as Name , Subject = '数学' , Result = 数学 from tb1
union all
select 姓名 as Name , Subject = '物理' , Result = 物理 from tb1
) t
order by name , case Subject when '语文' then 1 when '数学' then 2 when '物理' then 3 when '总分' then 4 end
/*加个平均分,总分
Name Subject Result
---------- ------- --------------------
李四 语文 74.00
李四 数学 84.00
李四 物理 94.00
李四 平均分 84.00
李四 总分 252.00
张三 语文 74.00
张三 数学 83.00
张三 物理 93.00
张三 平均分 83.33
张三 总分 250.00
*/
<!--EndFragment--><!--EndFragment--><!--EndFragment-->
<!--EndFragment-->
select * from
(
select 姓名 as Name , Subject = '语文' , Result = 语文 from tb1
union all
select 姓名 as Name , Subject = '数学' , Result = 数学 from tb1
union all
select 姓名 as Name , Subject = '物理' , Result = 物理 from tb1
union all
select 姓名 as Name , Subject = '平均分' , Result = cast((语文 + 数学 + 物理)*1.0/3 as decimal(18,2)) from tb1
union all
select 姓名 as Name , Subject = '总分' , Result = 语文 + 数学 + 物理 from tb1
) t
order by name , case Subject when '语文' then 1 when '数学' then 2 when '物理' then 3 when '平均分' then 4 when '总分' then 5 end
<!--EndFragment-->
<!--EndFragment-->
相关推荐
DB2表空间不足及处理 DB2表空间是数据库管理系统中用于存储数据的基本结构单元。DB2表空间不足可能会导致数据库性能下降,甚至崩溃。因此, DB2表空间的检查和处理是数据库管理员的重要任务之一。 一、DB2表空间的...
表空间状态主要由十六进制数值表示,通过`db2tbst`命令可以解析这些数值,转换为人类可读的状态描述。例如,状态值`0x0008`对应于`LoadPending`状态,意味着在执行完指定时间点的前滚操作或特定条件下的LOAD操作后,...
db2系统表、视图说明,sysibm.systables,sysibm.syscolumns,syscat.tables,syscat.columns,我们可以通过 LIST TABLES FOR SYSTEM 或 LIST TABLES FOR SCHEMA schemaname 命令查看所有的系统表和相关的视图信息。...
"DB2表空间不足及处理" DB2表空间不足是指数据库中可用空间不足,以致影响数据库的正常运行。在本文中,我们将介绍如何检查DB2表空间是否不足,以及如何处理这种情况。 什么是DB2表空间? 在DB2中,表空间是指...
本文将深入探讨“DB2解决表死锁”这一主题,结合提供的资源“DB2解除表锁.doc”,我们将讨论死锁的基本概念、DB2中的死锁检测、死锁预防以及如何在遇到死锁时进行有效的解决。 首先,我们要理解什么是死锁。死锁是...
本主题聚焦于“db2分区表在线迁移”,这是一个关键的数据库操作,旨在确保业务连续性和数据安全性,同时最小化对正常服务的影响。下面我们将深入探讨DB2分区表的概念、在线迁移的重要性以及实现这一过程的策略和技术...
当需要对 DB2 表进行操作,比如清空其中的所有数据时,有几种不同的 SQL 语句可以实现这一目标。以下是对标题和描述中涉及的知识点的详细解释: 1. **DELETE 语句**: DELETE 语句是最常见的删除表中数据的方法。...
一、DB2DB 的全称是 DataBase2DataBase,可以实现任意数据库类型之间的数据库转换,目前支持的数据库类型有: -Microsoft SQLServer 2005或以上 -MySQL -Microsoft SQLServer CE -SQLite -Access 二、数据库转换...
### DB2数据表数据导出至Excel的详细步骤与原理 #### 一、引言 在日常工作中,经常需要将数据库中的数据导出至Excel进行进一步处理或分析。本文将详细介绍如何将IBM DB2数据库中的数据表数据导出至Excel的具体步骤...
DB2 导出数据库表结构和数据 DB2 是一个关系数据库管理系统,能够高效地存储、管理和检索大量数据。在实际应用中,我们经常需要导出数据库表结构和数据,今天我们将讨论如何使用 DB2 导出数据库表结构和数据。 ...
DB2数据库移植和转换工具是IT领域中一个关键的话题,特别是在企业级系统迁移或升级的过程中。DB2,由IBM开发,是一款广泛使用的的关系型数据库管理系统(RDBMS),支持多种操作系统平台,包括Windows、Linux、Unix和...
下面我们将详细探讨如何从DB2数据库将表导入到MySQL中,并在MyEclipse环境中进行操作。 首先,了解DB2和MySQL的基础是至关重要的。DB2是由IBM开发的一款关系型数据库管理系统,广泛应用于大型企业,支持复杂的事务...
DB2的表空间 DB2的表空间 DB2的表空间 DB2的表空间
DB2DB 是目前经过测试速度最快,最稳定实现多种数据库之间进行数据转换的工具。工具目前支持 SQL Server、MySQL、SQLite、Access 等数据库类型,通过该工具可以地把原来的系统,方便快速部署在不同的数据库甚至是...
DB2 导出表结构、表数据小结 DB2 是一个关系数据库管理系统,提供了多种方式来导出表结构和表数据。在本文中,我们将介绍如何使用 DB2 命令行工具来导出表结构和表数据。 一、DB2 命令行导出数据库全库表结构 ...
当遇到如DB2这样的数据库系统中的表损坏问题时,如何快速有效地恢复,成为了DBA(数据库管理员)和运维人员关注的重点。本文将详细阐述使用“db2look-move”方法进行DB2表损坏快速恢复的步骤与原理,帮助读者理解并...
本篇文章将详细介绍如何在AIX操作系统上对DB2的裸设备进行扩容,以及涉及的表空间扩展过程。 首先,我们需要理解表空间在DB2中的作用。表空间是DB2数据库中逻辑存储的容器,用于组织和管理数据库对象如表、索引等。...
### DB2表空间详解 #### 一、表空间概述 在DB2中,表空间是连接物理存储设备与逻辑对象(如表)的关键组件,它为数据库中的数据提供存储环境。表空间的设计与管理对数据库性能有着直接的影响,合理规划表空间能够...