`

[转]DB2行列转换

 
阅读更多
行转列
给出下面的数据:
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子句中的一个表产生了关系,取出了表中的一列作为数据
分享到:
评论

相关推荐

    DB2 SQL 实现行转列,列转行

    DB2 SQL 通过函数(CONCAT/POSSTR/LOCATE)实现行转列,列转行 可以按照标点把多列转换为一行,多行转换为一列

    空间数据的转换与处理

    转换时,需要注意矢量数据的直角坐标系统与栅格数据的行列坐标系统的对应关系,确保转换的准确性。 总的来说,空间数据的转换与处理是GIS工作中至关重要的步骤,它涉及到地理信息的正确表示、兼容性和计算效率。...

    不定长的select交叉表查询,而且不用游标 sql 行列转化

    ### 不定长的SELECT交叉表查询,且不用游标:SQL行列转换技术解析 #### 一、背景介绍 在数据库管理中,数据的组织形式多种多样,有时我们需要将原本存储为行的数据转换成列的形式展示,反之亦然。这种转换在实际...

    sqltoy-orm是比hibernate+myBatis(plus)更加贴合项目的orm框架(依赖spring)

    除具有JPA功能外,具有最佳的sql编写模式、独创的缓存翻译、最优化的分页、并提供分组汇总、同比环比、行列转换、树形排序汇总、多数据库适配(oracle\mysql\sqlserver\postgresql\sqlite\db2\clickhouse\starrocks\...

    wfsReporter.rar

    交叉报表是一种强大的数据分析工具,它能以行列交叉的方式展示数据,使得用户可以从多个角度对数据进行分析。例如,Demo.wfs和Demo文件可能是包含示例数据和配置的测试案例,用户可以通过它们了解如何使用...

    sagacity-sqltoy-5.2.zip

    除具有JPA功能外,具有最佳的sql编写模式、独创的缓存翻译、最优化的分页、并提供分组汇总、同比环比、行列转换、树形排序汇总、多数据库适配(oracle\mysql\sqlserver\postgresql\sqlite\db2\clickhouse\starrocks\...

    好用的excel导入导出工具for Java(兼容2003和2007)

    描述中提到的“读取excel为List,Object>>方便转换,excel2db,db2excel”指出了该工具的核心功能。首先,它能够将Excel文件读取为一个List,其中每个元素是一个Map,键是单元格的列名,值是对应的单元格数据,这种...

    数据查询统计工具net4.0

    字段3[,字段4] 行列转置,分号前为保留在行的字段,分号后为转置成列的字段 GROUP 字段[,字段2][;[字段名=]统计表达式/[:]格式化表达式][;表达式2] 分组统计,例:--group id;AvgPrice=avg(child.price) SORT 排序...

    小波变换程序(C++)

    2. **熟悉MATLAB中常用系统变量和函数**:了解MATLAB中诸如`whos`、`who`、`clear`、`length`、`size`等命令的功能,以便更好地转换为C++实现。 3. **掌握MATLAB支持的小波类型**:MATLAB支持多种小波,这些小波...

    ETL工具比较大全,包含关键功能点

    在数据转换方面,无论是字段映射,拆分,记录的拆分与合并,还是行列变换,复杂的条件过滤,数学函数数据转换等功能,三款工具均表现优秀,展现了强大的数据处理能力。 #### 高级功能与数据质量 - **复杂条件过滤*...

    SQL语句大全

    - `PIVOT`和`UNPIVOT`用于行列转换,便于数据分析。 以上就是SQL语句大全中涉及的一些主要知识点,它们是数据库操作的基础,对于数据库管理和开发人员来说至关重要。学习并熟练掌握这些语句,将有助于高效地管理...

    sqltoy-orm框架系统-其他

    6、提供行列转换(数据旋转),避免写复杂的sql或存储过程,用算法来化解对sql的高要求,同时实现数据库无关(不管是mysql还是sqlserver) 7、提供分组汇总求平均算法(用算法代替sql避免跨数据库语法不一致) 8、分库分表...

    关于bi工具选型

    商业智能(BI)工具是企业用来提取、转换、加载(ETL)、分析和展示数据的重要工具,用于帮助企业做出明智的业务决策。选择合适的BI工具是一项关键任务,涉及到多个方面的考量。以下是一些主要的选型依据: 1. **...

    Sql和jdbc教程(私塾在线)视频配套学习资料

    - **行列转换**:利用SQL函数实现数据的行列互换,如使用PIVOT和UNPIVOT函数。 - **分页查询**:通过LIMIT或ROWNUM等关键字实现数据的分页显示。 - **处理树形结构**:利用自连接或者递归查询等方式处理数据库中的树...

Global site tag (gtag.js) - Google Analytics