我使用的是雪花计算提供的雪花弹性数据仓库。我有一个没有标识或主键列的表,但整个表中有重复的行。
我的问题是,在每个重复集中,我需要通过将表中的finalsale
andtaxindollars
列清零来更新每个重复集中除了一个重复行之外的所有重复行。哪个重复行保持不变/不更新都没有关系。因此,如果有 3 条重复的线,则只需将其中 2 条线清零,而剩下的另一条线应保持不变。我尝试执行以下查询,该查询在此处作为答案给出:
更新 SQL Server 表中除一条重复记录外的所有重复记录
但它在雪花中不起作用。它告诉我对象“T”不存在。然而,下面返回需要更新的确切行(为每个不更新的集合留出 1 个行项)。关于如何在 Snowflake 中完成此操作并获取除 1 之外的所有重复行的任何想法,每个重复集都更新为 0finalsale
和taxindollars
?
UPDATE t SET
t.finalsale = 0,
t.taxindollars = 0
FROM (
SELECT *, row_number() OVER(PARTITION BY
saleid,
locationname,
customertype,
finalsale,
quantity,
sku
ORDER BY
(SELECT NULL)) row_num
FROM
salesdetail
) t
WHERE row_num > 1
谢谢你的帮助!