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

Oracle SQL查询结果重排:单行拆分为两行的实现方法

Oracle SQL 宽表拆分行解决方案

针对你提供的表结构,要将每行原生数据拆分为两行,可通过以下两种常用方法实现:

方法一:使用UNION ALL(直观易读)

直接通过两次查询分别提取对应字段,再合并结果:

SELECT ID, Value1 AS "Value1/2", Value3 AS "Value3/4"
FROM your_pivoted_table
UNION ALL
SELECT ID, Value2 AS "Value1/2", Value4 AS "Value3/4"
FROM your_pivoted_table
ORDER BY ID;
  • 第一个查询提取每行的Value1和Value3,第二个查询提取Value2和Value4
  • UNION ALL保留所有结果(无重复行时性能优于UNION)
  • ORDER BY ID确保同一ID的两行结果相邻

方法二:使用CROSS JOIN + 行生成器(扩展性更强)

适合后续可能增加更多成对字段的场景:

SELECT 
    t.ID,
    CASE nums.rn 
        WHEN 1 THEN t.Value1 
        ELSE t.Value2 
    END AS "Value1/2",
    CASE nums.rn 
        WHEN 1 THEN t.Value3 
        ELSE t.Value4 
    END AS "Value3/4"
FROM your_pivoted_table t
CROSS JOIN (
    SELECT 1 AS rn FROM DUAL
    UNION ALL
    SELECT 2 AS rn FROM DUAL
) nums
ORDER BY t.ID, nums.rn;
  • 子查询nums生成两行标记(1和2),通过CROSS JOIN让原表每行对应两行标记数据
  • 利用CASE语句根据标记值选择对应字段,后续新增成对字段时只需扩展CASE逻辑即可

注意:将your_pivoted_table替换为你实际的表名,若未将Pivot结果保存为表,可直接把原Pivot查询语句替换此处。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:41:12