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

Oracle SQL如何将单列存储的数据排序后拆分至多列展示

Oracle单列拆分多列实现方案

假设你存储数据的表名为data_table,对应列名为val,可直接使用以下SQL脚本:

WITH sorted_data AS (
    SELECT 
        val,
        SUBSTR(val, 1, 1) AS first_char,
        ROW_NUMBER() OVER(PARTITION BY SUBSTR(val, 1, 1) ORDER BY val) AS rn
    FROM data_table
    -- 若需保留"A3, and so on"这类非标准格式数据,可删除下方WHERE条件
    WHERE REGEXP_LIKE(val, '^[A-Z]\d+$')
)
SELECT 
    MAX(CASE WHEN first_char = 'A' THEN val END) AS col_a,
    MAX(CASE WHEN first_char = 'B' THEN val END) AS col_b,
    MAX(CASE WHEN first_char = 'C' THEN val END) AS col_c,
    MAX(CASE WHEN first_char = 'D' THEN val END) AS col_d
FROM sorted_data
GROUP BY rn
ORDER BY rn;

逻辑说明

  • 先通过SUBSTR函数提取每个值的首字母作为分组依据
  • 用窗口函数ROW_NUMBER()给每个首字母分组下的数值排序生成行号,相同排序位置的数值会被分配到同一行展示
  • 最后通过CASE判断+聚合函数实现行转列,无对应值的位置会自动留空
  • 如果需要扩展更多列,只需要对应增加CASE判断分支即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:48:00