vertica sql实现行转列
Posted 卡卡西村长的小灶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vertica sql实现行转列相关的知识,希望对你有一定的参考价值。
CREATE TABLE t1 ( id int, name varchar(10) ); INSERT INTO t1 SELECT 1 AS id, ‘greg‘ AS name UNION ALL SELECT 2, ‘paul‘ UNION ALL SELECT 3, ‘greg‘ UNION ALL SELECT 4, ‘greg‘ UNION ALL SELECT 5, ‘paul‘; COMMIT; SELECT name, MAX(DECODE(row_number, 1, a.id)) || NVL(MAX(DECODE(row_number, 2, ‘,‘ || a.id)), ‘‘) || NVL(MAX(DECODE(row_number, 3, ‘,‘ || a.id)), ‘‘) || NVL(MAX(DECODE(row_number, 4, ‘,‘ || a.id)), ‘‘) || NVL(MAX(DECODE(row_number, 5, ‘,‘ || a.id)), ‘‘) || NVL(MAX(DECODE(row_number, 6, ‘,‘ || a.id)), ‘‘) || NVL(MAX(DECODE(row_number, 7, ‘,‘ || a.id)), ‘‘) || NVL(MAX(DECODE(row_number, 8, ‘,‘ || a.id)), ‘‘) || NVL(MAX(DECODE(row_number, 9, ‘,‘ || a.id)), ‘‘) || NVL(MAX(DECODE(row_number, 10, ‘,‘ || a.id)), ‘‘) id FROM (SELECT name, id, ROW_NUMBER() OVER(PARTITION BY name ORDER BY id) row_number FROM t1) a GROUP BY a.name ORDER BY a.name;
Result
name | id
------+-------
greg | 1,3,4
paul | 2,5
以上是关于vertica sql实现行转列的主要内容,如果未能解决你的问题,请参考以下文章