行转列
给出下面的数据:
CREATE TABLE Sales (Year INT, Quarter INT, Results INT)
YEAR QUARTER RESULTS----------- ----------- ----------- 2004 1 20 2004 2 30 2004 3 15 2004 4 10 2005 1 18 2005 2 40 2005 3 12 2005 4 27想要的到结果:YEAR Q1 Q2 Q3 Q4----------- ----------- ----------- ----------- ----------- 2004 20 30 15 10 2005 18 40 12 27这个SQL就可解决这个问题:SELECT Year, MAX(CASE WHEN Quarter = 1 THEN Results END) AS Q1, MAX(CASE WHEN Quarter = 2 THEN Results END) AS Q2, MAX(CASE WHEN Quarter = 3 THEN Results END) AS Q3, MAX(CASE WHEN Quarter = 4 THEN Results END) AS Q4FROM SalesGROUP BY Year解释一下为什么要加max的原因,因为不加max的话结果会是这样:YEAR Q1 Q2 Q3 Q4----------- ----------- ----------- ----------- ----------- 2004 20 - - - 2004 - 30 - - 2004 - - 15 - 2004 - - - 10 2005 18 - - - 2005 - 40 - - 2005 - - 12 - 2005 - - - 27列转行
给出下面数据
CREATE TABLE SalesAgg( year INTEGER, q1 INTEGER, q2 INTEGER, q3 INTEGER, q4 INTEGER );YEAR Q1 Q2 Q3 Q4----------- ----------- ----------- ----------- ----------- 2004 20 30 15 10 2005 18 40 12 27想要的结果YEAR QUARTER RESULTS----------- ----------- ----------- 2004 1 20 2004 2 30 2004 3 15 2004 4 10 2005 1 18 2005 2 40 2005 3 12 2005 4 27这个SQL就可以实现:
SELECT S.Year, Q.Quarter, Q.ResultsFROM SalesAgg AS S, TABLE (VALUES(1, S.q1), (2, S.q2), (3, S.q3), (4, S.q4)) AS Q(Quarter, Results);下面解释一下执行的过程:核心是用table函数创建了一个表,这个表是用value实现的多行表,value实现虚表的例子:db2 => select * from (values (1,2),(2,3)) as t1(col1,col2)COL1 COL2----------- ----------- 1 2 2 3 2 条记录已选择。db2 => select * from (values 1) as a
1
-----------
1
1 条记录已选择。
所不同的是这里跟from子句中的一个表产生了关系,取出了表中的一列作为数据
给出下面的数据:
CREATE TABLE Sales (Year INT, Quarter INT, Results INT)
YEAR QUARTER RESULTS----------- ----------- ----------- 2004 1 20 2004 2 30 2004 3 15 2004 4 10 2005 1 18 2005 2 40 2005 3 12 2005 4 27想要的到结果:YEAR Q1 Q2 Q3 Q4----------- ----------- ----------- ----------- ----------- 2004 20 30 15 10 2005 18 40 12 27这个SQL就可解决这个问题:SELECT Year, MAX(CASE WHEN Quarter = 1 THEN Results END) AS Q1, MAX(CASE WHEN Quarter = 2 THEN Results END) AS Q2, MAX(CASE WHEN Quarter = 3 THEN Results END) AS Q3, MAX(CASE WHEN Quarter = 4 THEN Results END) AS Q4FROM SalesGROUP BY Year解释一下为什么要加max的原因,因为不加max的话结果会是这样:YEAR Q1 Q2 Q3 Q4----------- ----------- ----------- ----------- ----------- 2004 20 - - - 2004 - 30 - - 2004 - - 15 - 2004 - - - 10 2005 18 - - - 2005 - 40 - - 2005 - - 12 - 2005 - - - 27列转行
给出下面数据
CREATE TABLE SalesAgg( year INTEGER, q1 INTEGER, q2 INTEGER, q3 INTEGER, q4 INTEGER );YEAR Q1 Q2 Q3 Q4----------- ----------- ----------- ----------- ----------- 2004 20 30 15 10 2005 18 40 12 27想要的结果YEAR QUARTER RESULTS----------- ----------- ----------- 2004 1 20 2004 2 30 2004 3 15 2004 4 10 2005 1 18 2005 2 40 2005 3 12 2005 4 27这个SQL就可以实现:
SELECT S.Year, Q.Quarter, Q.ResultsFROM SalesAgg AS S, TABLE (VALUES(1, S.q1), (2, S.q2), (3, S.q3), (4, S.q4)) AS Q(Quarter, Results);下面解释一下执行的过程:核心是用table函数创建了一个表,这个表是用value实现的多行表,value实现虚表的例子:db2 => select * from (values (1,2),(2,3)) as t1(col1,col2)COL1 COL2----------- ----------- 1 2 2 3 2 条记录已选择。db2 => select * from (values 1) as a
1
-----------
1
1 条记录已选择。
所不同的是这里跟from子句中的一个表产生了关系,取出了表中的一列作为数据
发表评论
-
一个故事讲清楚NIO(转载)
2015-10-22 11:32 617假设某银行只有10个职 ... -
一些数据库自定义函数
2013-10-15 21:42 865oracle 写法: --联系人列表 create or r ... -
如何远程连接db2数据库
2012-09-18 10:10 892在DB2数据库中,编目(catal ... -
存储过程 入门
2012-09-07 09:49 856示例说明:先创建一个临时表,并插入数据,然后查询临时表,返回游 ... -
ue使用的一些小技巧
2012-09-05 11:36 11971. UE里面替换tab键为空格 解决使用UE编辑好 ... -
ext tree 更改图标
2012-04-16 23:11 1636如果在Java代码中树的Node不设置cls的话,Extjs ... -
js六种数据类型和var
2012-04-13 14:32 1216JavaScript 有六种数据类 ... -
ExtJs 控制复选框disabled
2012-04-13 14:12 2853var csm2 = new Ext.grid.Checkbo ... -
JS 四舍五入
2012-04-10 23:36 916写法巨强的四舍五入的转换函数,如下: function ro ... -
Ext el属性
2012-04-10 23:08 844这个是你要将你的组件渲染到哪个div 比如有个<div ... -
getOutputStream() has already been called for this response
2012-04-06 17:33 938getOutputStream() has al ... -
修改TOMCAT(5.5版本前)内存的方法
2012-03-30 11:34 1066Tomcat默认可以使用的内 ... -
oracle 常用sql
2012-03-27 10:49 806--创建用户 CREATE USER &q ... -
两台windows服务器----SVN的迁移
2012-03-26 17:27 1113两台服务器,进行SVN的迁移: 系统平台:windows se ... -
hibernate 延迟加载
2012-03-23 18:06 737延迟加载机制是为了避 ... -
分享一个ldap验证链接的方法
2012-03-22 12:07 1074public String auth(String userN ... -
poi 操作excel
2012-03-19 21:52 1100本篇面向对象为Java的初 ... -
oracle 复制表
2012-03-15 11:47 10661.不同用户之间的表数 ... -
Oracle Minus关键字
2012-03-06 15:56 1097//--一句话 去同存异,留第一个sql里面的结果。 //创建 ... -
闪回 找回已删除的数据
2012-02-24 15:26 783SCN(系统改变号),它的英文全拼为:System Chang ...
相关推荐
DB2 SQL 通过函数(CONCAT/POSSTR/LOCATE)实现行转列,列转行 可以按照标点把多列转换为一行,多行转换为一列
ORACLE转DB2对照全解,学习数据库转换的好帮手
数据库转换工具,可实现oracle,mysql,sqlserver,sybase,db2相互转换
详细描述了DB2与GreenPlum/PostgreSQL在各方面的差异,主要用于DB2数据库向GreenPlum/PostgreSQL数据库的迁移。
Oracle和DB2的转换[参照].pdf
DB2和HIVE的函数相互转换,大部分函数都实现了的。
DB2开启兼容模式后,Oracle转DB2的指导手册,写的很详细
DB2DB 是目前经过测试速度最快,最稳定实现多种数据库之间进行数据转换的工具。工具目前支持 SQL Server、MySQL、SQLite、Access 等数据库类型,通过该工具可以地把原来的系统,方便快速部署在不同的数据库甚至是...
oracle与db2的区别和转换。我做过把ORACLE向DB2转换,这个文件帮了我大忙。希望对你有用。内容包括各种函数与存储过程的区别
一、DB2DB 的全称是 DataBase2DataBase,可以实现任意数据库类型之间的数据库转换,目前支持的数据库类型有: -Microsoft SQLServer 2005或以上 -MySQL -Microsoft SQLServer CE -SQLite -Access 二、数据库转换...
拼音转换成汉字的好工具 拼音转换成汉字的好工具
西门子数控报警号与DB2地址转换公式+机床数据MD1451x与DB20地址转换,excel,自动转换
找了好久,只测试了sql server到mysql的,还支持其他的转换,不过没测试过 http://www.threeleafsoft.com/WebSite/Home 任意数据库转换系统 DB2DB 1.6 传个资源,免得失效了
帮助 你更快 更好的 去分析 去解决 oracle转db2所遇到的困难
非常db2数据库移植和转换工具,内含操作文档。
由oracle dba转向DB2的好书,学习必备
db2驱动包 db2jcc4.jar db2jcc4.jar db2java.jar db2jcc_javax.jar db2jcc_license_cisuz.jar db2jcc_license_cu.jar db2policy.jar,压缩包无加密,可以放心下载,良心资源。
将db2look -d database -e -o database.sql 生成的.sql文件转换成去引号,可读性强,带有drop的ddl文件。 作为环境的搭建的工具,自动删表建表
DB2DB2DB2DB2DB2DB2DB2DB2DB2
《舞动db2系列从oracle到db2开发—从容转身》是“舞动db2”系列的第二本,分为三大部分,共8章。第一部分从开发者遇到的问题进行分析,提出在oracle兼容模式下开发数据应用的新思路,并讲述了从oracle迁移到db2的...