温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

DB2行列转置的行转列是怎样的

发布时间:2021-11-30 11:22:30 来源:亿速云 阅读:537 作者:柒染 栏目:数据库

DB2行列转置的行转列是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

建表,并insert 2行数据
CREATE TABLE SalesAgg(year INTEGER, q1 INTEGER, q2 INTEGER, q3 INTEGER, q4 INTEGER);
insert into SalesAgg values(2004,20,30,15,10);
insert into SalesAgg values(2005,18,40,12,27);

Select * from SalesAgg

 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 Year, Quarter, Results
FROM SalesAgg AS S,
LATERAL(VALUES(1, S.q1),
(2, S.q2),
(3, S.q3),
(4, S.q4))
AS Q(Quarter, Results); LATERAL的地方可以换成TABLE,结果一样,其目的都是通过VALUES值来组合成一个临时表Q在SQL中使用
SELECT Year, Quarter, Results
FROM SalesAgg AS S,
TABLE(VALUES(1, S.q1),
(2, S.q2),
(3, S.q3),
(4, S.q4))
AS Q(Quarter, Results);

另外一个使用TABLE的例子
SELECT id ANSWER
    ,salary AS sal
    ,comm AS com
    ,combo
    ,typ
FROM staff
    ,TABLE (
        VALUES (
            salary
            ,'SAL'
            )
            ,(
            comm
            ,'COM'
            )
        ) AS tab(combo, typ)
WHERE id < 40
ORDER BY id
    ,typ;                   

行转列使用示例

CREATE OR REPLACE PROCEDURE DB2INST1.TEST(OUT out_msg VARCHAR(4000))
SPECIFIC DB2INST1.TEST
MODIFIES SQL DATA
NOT DETERMINISTIC
NULL CALL
LANGUAGE SQL EXTERNAL ACTION
INHERIT SPECIAL REGISTERS
BEGIN
    DECLARE v_col1s VARCHAR(4000);
    DECLARE v_sql VARCHAR(4000);
    SELECT SUBSTR(XMLCAST(XMLGROUP(',' || col1 AS a ORDER BY col1) as varchar(4000)),2) into v_col1s FROM aaa;
    SET out_msg = 'SELECT * FROM aaa where col1 in (' || TRIM(v_col1s) || ')';     

看完上述内容,你们掌握DB2行列转置的行转列是怎样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

db2
AI