DB2列转行的实现

数据库
想要在DB2数据库中实现列转行,应该如何操作呢?下文就教您一个实现DB2数据库列转行的方法,希望对您能够有所启迪。

DB2列转行是我们很常见的操作,下面就为您详细介绍DB2列转行的步骤,如果您对DB2列转行方面感兴趣的话,不妨一看。

给出下面数据

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.Results
FROM SalesAgg AS S,
     TABLE (VALUES(1, S.q1),
                  (2, S.q2),
                  (3, S.q3),
                  (4, S.q4))
            AS Q(Quarter, Results);
每个values中对应列的数据类型必须相同,值可以任意,如1,2,3,4都是整形下面解释一下执行的过程:核心是用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子句中的一个表产生了关系,取出了表中的一列作为数据。 

【编辑推荐】

DB2在线备份的实现方法

Windows下创建DB2实例的方法

DB2时间函数大全

DB2公共表表达式的用法

四种删除DB2数据的方法

 

责任编辑:段燃 来源: 互联网
相关推荐

2010-09-30 10:45:28

DB2列的修改

2010-11-03 16:25:51

DB2列函数

2010-09-30 15:52:55

DB2循环查询

2009-08-25 17:20:57

C#实现OLE DB的

2010-11-02 15:56:42

DB2添加验证约束

2010-11-03 14:10:23

DB2在线备份

2010-11-02 11:08:11

DB2循环查询

2010-09-30 13:37:34

DB2分页

2010-11-03 16:32:10

DB2创建数据库

2015-10-23 16:40:21

DB2删除数据

2010-11-01 17:02:52

DB2页大小

2010-11-03 10:26:22

DB2存储过程

2010-11-03 13:50:49

DB2删除重复数据

2010-11-04 15:26:44

DB2日期格式

2010-08-26 11:37:38

DB2命令

2010-08-09 10:00:25

DB2数据移动

2010-11-04 13:55:26

DB2 SQL脚本批量

2010-09-30 09:53:05

DB2创建表空间

2010-08-18 17:15:23

DB2 实现split

2010-11-03 15:49:32

DB2删除表
点赞
收藏

51CTO技术栈公众号