我的表A有一列col1。此列中的元素应该得到一个新的安排。第一个元素是第一个元素,最后一个元素成为第二个元素,第二个元素成为第三个元素,依此类推......
col1 col1
---- -----
1 1
2 5
3 result => 2
4 4
5 3
对于我来说,它看起来像late merge。如何在我的案例中应用延迟合并?
按相反顺序添加列
col1 col2
------ -----
1 4
2 3
3 2
4 1
将它们合并为一列
答案 0 :(得分:0)
假设您的单值增加col1
,就像您的示例中一样。在常规查询中,它将如下工作:
SELECT col1,
CASE WHEN col1 <= (max + 1) / 2 THEN col1 * 2 - 1
ELSE (max - col1 + 1) * 2
END AS col2
FROM t,
(SELECT max(col1) max FROM t) m;
在UPDATE
声明中,您可以这样做:
UPDATE t
SET col1 = CASE WHEN col1 <= (max + 1) / 2 THEN col1 * 2 - 1
ELSE (max - col1 + 1) * 2
END
FROM (SELECT max(col1) max FROM t) m;