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

如何使用单条SQL语句实现指定数据表的转换输出?

单条SQL实现指定数据重排需求

原始表数据

Col1Col2Col3
12000500
29000200
35000900
44000600

期望输出

col1col2col3
19000200
25000500
34000600
42000900

可以用窗口函数ROW_NUMBER()实现单条SQL的转换,核心思路是通过生成行号关联排序后的Col2、Col3与原表的Col1顺序:

SELECT 
    t.col1,
    t2.col2,
    t3.col3
FROM 
    (SELECT col1, ROW_NUMBER() OVER(ORDER BY col1) AS rn FROM your_table) t
INNER JOIN 
    (SELECT col2, ROW_NUMBER() OVER(ORDER BY col2 DESC) AS rn FROM your_table) t2
    ON t.rn = t2.rn
INNER JOIN 
    (SELECT col3, ROW_NUMBER() OVER(ORDER BY col3 ASC) AS rn FROM your_table) t3
    ON t.rn = t3.rn
ORDER BY 
    t.col1;

说明:

  • 子查询t按col1升序生成行号,保留原始行的顺序标识
  • 子查询t2按col2降序生成行号,将col2从大到小排序后对应到目标位置
  • 子查询t3按col3升序生成行号,将col3从小到大排序后对应到目标位置
  • 最后通过行号rn关联三个数据集,得到期望的输出结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:01:02