`
yangli
  • 浏览: 61900 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

DB2 纵横表转换

    博客分类:
  • DB2
阅读更多

普通行列转换:

-------------------------纵表转横表--------------------------------------------

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表空间不足及处理.doc

    DB2表空间不足及处理 DB2表空间是数据库管理系统中用于存储数据的基本结构单元。DB2表空间不足可能会导致数据库性能下降,甚至崩溃。因此, DB2表空间的检查和处理是数据库管理员的重要任务之一。 一、DB2表空间的...

    DB2表和表空间状态详解

    表空间状态主要由十六进制数值表示,通过`db2tbst`命令可以解析这些数值,转换为人类可读的状态描述。例如,状态值`0x0008`对应于`LoadPending`状态,意味着在执行完指定时间点的前滚操作或特定条件下的LOAD操作后,...

    db2 系统表和视图说明

    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解决表死锁

    本文将深入探讨“DB2解决表死锁”这一主题,结合提供的资源“DB2解除表锁.doc”,我们将讨论死锁的基本概念、DB2中的死锁检测、死锁预防以及如何在遇到死锁时进行有效的解决。 首先,我们要理解什么是死锁。死锁是...

    db2分区表在线迁移

    本主题聚焦于“db2分区表在线迁移”,这是一个关键的数据库操作,旨在确保业务连续性和数据安全性,同时最小化对正常服务的影响。下面我们将深入探讨DB2分区表的概念、在线迁移的重要性以及实现这一过程的策略和技术...

    DB2清空表里所有数据.doc

    当需要对 DB2 表进行操作,比如清空其中的所有数据时,有几种不同的 SQL 语句可以实现这一目标。以下是对标题和描述中涉及的知识点的详细解释: 1. **DELETE 语句**: DELETE 语句是最常见的删除表中数据的方法。...

    DB2DB数据库转换工具

    一、DB2DB 的全称是 DataBase2DataBase,可以实现任意数据库类型之间的数据库转换,目前支持的数据库类型有: -Microsoft SQLServer 2005或以上 -MySQL -Microsoft SQLServer CE -SQLite -Access 二、数据库转换...

    DB2导出数据库表结构和数据.pdf

    DB2 导出数据库表结构和数据 DB2 是一个关系数据库管理系统,能够高效地存储、管理和检索大量数据。在实际应用中,我们经常需要导出数据库表结构和数据,今天我们将讨论如何使用 DB2 导出数据库表结构和数据。 ...

    db2数据库移植和转换工具

    DB2数据库移植和转换工具是IT领域中一个关键的话题,特别是在企业级系统迁移或升级的过程中。DB2,由IBM开发,是一款广泛使用的的关系型数据库管理系统(RDBMS),支持多种操作系统平台,包括Windows、Linux、Unix和...

    DB2数据库表导入MYSQL

    下面我们将详细探讨如何从DB2数据库将表导入到MySQL中,并在MyEclipse环境中进行操作。 首先,了解DB2和MySQL的基础是至关重要的。DB2是由IBM开发的一款关系型数据库管理系统,广泛应用于大型企业,支持复杂的事务...

    DB2的表空间 DB2的表空间

    DB2的表空间 DB2的表空间 DB2的表空间 DB2的表空间

    DB2DB 数据库转换工具 V1.9.5

    DB2DB 是目前经过测试速度最快,最稳定实现多种数据库之间进行数据转换的工具。工具目前支持 SQL Server、MySQL、SQLite、Access 等数据库类型,通过该工具可以地把原来的系统,方便快速部署在不同的数据库甚至是...

    DB2导出表结构、表数据小结

    DB2 导出表结构、表数据小结 DB2 是一个关系数据库管理系统,提供了多种方式来导出表结构和表数据。在本文中,我们将介绍如何使用 DB2 命令行工具来导出表结构和表数据。 一、DB2 命令行导出数据库全库表结构 ...

    db2裸设备扩容表空间

    本篇文章将详细介绍如何在AIX操作系统上对DB2的裸设备进行扩容,以及涉及的表空间扩展过程。 首先,我们需要理解表空间在DB2中的作用。表空间是DB2数据库中逻辑存储的容器,用于组织和管理数据库对象如表、索引等。...

    db2表空间详解

    ### DB2表空间详解 #### 一、表空间概述 在DB2中,表空间是连接物理存储设备与逻辑对象(如表)的关键组件,它为数据库中的数据提供存储环境。表空间的设计与管理对数据库性能有着直接的影响,合理规划表空间能够...

    DB2恢复删除表学习

    ### DB2恢复删除表学习 #### 一、DB2中删除表恢复机制概述 在IBM DB2数据库管理系统中,为了应对误删表的情况,DB2提供了表空间级别的表恢复功能。这种功能允许用户在一定条件下恢复已被删除的表及其数据。默认...

    db2 Load锁表 后解锁详解

    ### DB2 Load锁表后解锁详解 #### 一、引言 在数据库管理与维护过程中,数据加载(Load)操作是常见的数据导入手段之一。在DB2环境下进行数据加载时,由于Load操作不生成事务日志,这可能导致加载完成后表被锁定的...

Global site tag (gtag.js) - Google Analytics