You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vertica中实现列转行(Pivot)操作?

Vertica 实现列转行与字符串直接拆分行方案

一、已拆分多列的表转成行结构

对于已拆分为completion_Rate - step1、completion_Rate - step2、completion_Rate - step3多列的表,可通过UNION ALL拼接子查询实现列转行,这是Vertica处理固定数量列转行的常规方法:

SELECT ID, 1 AS step_number, "completion_Rate - step1" AS completion_Rate
FROM your_table_name
UNION ALL
SELECT ID, 2 AS step_number, "completion_Rate - step2" AS completion_Rate
FROM your_table_name
UNION ALL
SELECT ID, 3 AS step_number, "completion_Rate - step3" AS completion_Rate
FROM your_table_name
ORDER BY ID, step_number;

每个子查询对应一个步骤,手动指定step_number并选取对应列的数值,最后通过UNION ALL合并结果,按ID和步骤号排序即可得到目标结构。

二、直接从下划线分隔字符串拆分成行

如果原始表存储的是下划线分隔的字符串(如0_29_54),可使用Vertica内置的STRSPLIT_TO_TABLE函数直接拆分字符串为多行,无需先拆分为列:

SELECT 
    t.id,
    s.position AS step_number,
    s.value::INT AS completion_Rate
FROM your_original_table t
CROSS JOIN STRSPLIT_TO_TABLE(t.completion_rates, '_') OVER (PARTITION BY t.id) s
ORDER BY t.id, s.position;

说明:

  • STRSPLIT_TO_TABLE按指定分隔符(此处为_)拆分字符串,返回包含position(拆分元素的位置,从1开始)和value(拆分后元素值)的结果集。
  • OVER (PARTITION BY t.id)确保每个ID的拆分结果与原ID关联。
  • 根据实际数据类型,将value转换为INT类型,最后按ID和步骤号排序。

内容的提问来源于stack exchange,提问作者yarden pel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 06:41:07