大型机中用于转置的 DB2 Sql [关闭]

Posted

技术标签:

【中文标题】大型机中用于转置的 DB2 Sql [关闭]【英文标题】:DB2 Sql for transpose in Mainframe [closed] 【发布时间】:2018-08-24 18:01:07 【问题描述】:

want to achieve below the in mainframe Db2 Sql

【问题讨论】:

您需要实际提出问题而不是发布问题的图片。 【参考方案1】:

在 Db2 for LUW 上,这将起作用。大型机 SQL 将类似。只需使用您的表名代替 TABLE(VALUES ... AS(..)

SELECT
     MAX(CASE WHEN RN = 1 THEN Student_no END) AS Student_no_1
,    MAX(CASE WHEN RN = 1 THEN S_Name     END) AS S_Name_1    
,    MAX(CASE WHEN RN = 1 THEN Marks      END) AS Marks_1
,    MAX(CASE WHEN RN = 2 THEN Student_no END) AS Student_no_2
,    MAX(CASE WHEN RN = 2 THEN S_Name     END) AS S_Name_2
,    MAX(CASE WHEN RN = 2 THEN Marks      END) AS Marks_2
,    MAX(CASE WHEN RN = 3 THEN Student_no END) AS Student_no_3
,    MAX(CASE WHEN RN = 3 THEN S_Name     END) AS S_Name_3
,    MAX(CASE WHEN RN = 3 THEN Marks      END) AS Marks_3
FROM
(   SELECT ROW_NUMBER() OVER(ORDER BY Student_no) AS RN
    ,     Student_no
    ,     S_Name
    ,     Marks
    FROM
        TABLE(VALUES( 2, 'Abc', 89),( 5, 'dfg', 35),( 9, 'qwe', 56))
            AS (Student_no, S_Name, Marks)
)

STUDENT_NO_1 S_NAME_1 MARKS_1 STUDENT_NO_2 S_NAME_2 MARKS_2 STUDENT_NO_3 S_NAME_3 MARKS_3
------------ -------- ------- ------------ -------- ------- ------------ -------- -------
           2 Abc           89            5 dfg           35            9 qwe           56

【讨论】:

谢谢,我已经尝试了上面的查询,但它与我的 DB2 V11 抛出 SQL Code=-4743 不兼容。我们有另一种方法吗? 不喜欢哪一点? Row_number() 函数不接受 您是否检查过您的 Db2 版本是否支持它?例如。 ***.com/questions/2322249/… 谢谢它的帮助

以上是关于大型机中用于转置的 DB2 Sql [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

IBM DB2认证简介

DB2 的简介?与SQL Server 的区别与联系

sql server 和mysql,orcal,db2有什麼不同?

使用 SORT 进行大型机 JCL 记录转置

DB2 数据库的安装配置及监控

SQL Server 作业中的大型机作业依赖性