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

Snowflake SQL:如何复制记录并将STATUS字段修改为'ALL'?

实现每条记录生成副本并修改STATUS的SQL方案

最简便的实现方式根本不需要窗口函数,用UNION ALL就能直接搞定,这也是效率最高的方案:

SELECT ID, DATE_OPENED, DATE_CLOSED, STATUS, TREATMENT
FROM your_table
UNION ALL
SELECT ID, DATE_OPENED, DATE_CLOSED, 'ALL' AS STATUS, TREATMENT
FROM your_table;

说明:

  • 第一部分SELECT直接取出原表所有记录,保持原样不变
  • 第二部分SELECT同样取出所有字段,但把STATUS固定设为'ALL',生成副本记录
  • 用UNION ALL而非UNION,因为不需要去重(原记录和副本的STATUS字段值不同),UNION ALL的执行性能更优

你提到的ROW_NUMBER() OVER(PARTITION BY ID ORDER BY 1) = 1这类窗口函数,是用来筛选分组内特定行的(比如每个ID取第一条记录),完全不适用当前场景——我们需要的是复制所有记录,不是筛选,用窗口函数反而会把问题复杂化,完全没必要。

如果需要把结果写入新表,可以在语句前加INSERT INTO new_table (...),具体语法可根据你的数据库类型调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:35:35