我试图计算个别行与某一特定列的总数的百分比。
我能够在带有别名的
SELECT
语句中实现它,但我要在列
per
的帮助下进一步计算,在那里我推导出其他列,所以我需要在
UPDATE
查询中实现这一点。我尝试了下面的查询,但得到的是错误。
无效操作:子查询必须只返回一列
我没有任何唯一的ID。我不能在此使用
IN
语句。
我哪里做错了?
UPDATE a
SET per = (SELECT DISTINCT
code,
ratio_to_report(SUM(amnt)) OVER (PARTITION BY p) AS per
FROM a
GROUP BY code,p,pd
WHERE per IS null;
Rao
发布于 2019-06-28
2 个回答
0 人赞同
你试图用4个值来更新1列。 想象一下,在没有子查询的情况下。
UPDATE a
SET per = code, p, pd, per
WHERE per IS null;
你的子查询必须返回一个单一的列和行。
0 人赞同
你的子查询返回多个值和多条行。你需要准确地告诉Redshift如何将所有返回的值和行应用到被UPDATE
'ed的表中。
UPDATE tbl_a
SET tbl_a.per = code_sum.per
FROM tbl_a
JOIN (SELECT code
, SUM(amnt) AS per
FROM tbl_a
GROUP BY code
) code_sum
ON tbl_a.code = code_sum.code
WHERE per IS NULL