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

如何利用ROWNUM值将日期填充至不同列?

问题解决:将多行数据按ID转成宽表

原代码问题分析

你写的CASE语句逻辑有误,而且没有按ID分组,导致每条原始记录单独生成一行,所以Col1和Col2只能交替有值,无法合并到同一ID的行里。

正确SQL实现

要实现按ID聚合,把不同ROWNUM的DATE值映射到对应列,需要结合聚合函数+CASE语句+分组,示例代码如下(支持到10列):

SELECT 
    ID,
    MAX(CASE WHEN ROWNUM = 1 THEN DATE END) AS Col1,
    MAX(CASE WHEN ROWNUM = 2 THEN DATE END) AS Col2,
    MAX(CASE WHEN ROWNUM = 3 THEN DATE END) AS Col3,
    MAX(CASE WHEN ROWNUM = 4 THEN DATE END) AS Col4,
    MAX(CASE WHEN ROWNUM = 5 THEN DATE END) AS Col5,
    MAX(CASE WHEN ROWNUM = 6 THEN DATE END) AS Col6,
    MAX(CASE WHEN ROWNUM = 7 THEN DATE END) AS Col7,
    MAX(CASE WHEN ROWNUM = 8 THEN DATE END) AS Col8,
    MAX(CASE WHEN ROWNUM = 9 THEN DATE END) AS Col9,
    MAX(CASE WHEN ROWNUM = 10 THEN DATE END) AS Col10
FROM your_table_name
GROUP BY ID;

逻辑说明

  • 用GROUP BY ID把同一ID的所有记录聚合到一行
  • 每个CASE语句只保留对应ROWNUM的DATE值,其余情况返回NULL
  • 聚合函数MAX会自动忽略NULL值,将有效DATE值填充到对应列中(用MIN效果一样,因为每个ID+ROWNUM只有唯一一条记录)

验证结果

用你提供的原始数据执行上述SQL,会得到你期望的结果:

IDCol1Col2
11/1/20001/2/2000
212/30/200012/31/2000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:57:46