我有两列的表
key Account
---- -------
AAA01 BGHJ
AAA01 JHGF
AAA01 UHGF
AAA02 IYTG
AAA03 JHKJH
AAA03 REYT
我想用首先出现的Account值更新Key列的值。因此,我的输出应为:
key Account
---- -------
BGHJ BGHJ
BGHJ JHGF
BGHJ UHGF
IYTG IYTG
JHKJH JHKJH
JHKJH REYT
我一直在尝试按“键”对帐户分区使用ROW_NUMBER,并尝试使用具有ROW_NUMBER = 1的帐户值更新“键”值。但这不起作用。
更新的测试数据:
key Account
---- -------
1G00N 1N000C
1G00N 1N0008
1G00N 1N253M
1G00N 1N253N
1G00C 1N253N
1G00C 1N000B
我想用首先出现的Account值更新Key列的值。因此,我的输出应为:
key Account
---- -------
1N000C 1N000C
1N000C 1N0008
1N000C 1N253M
1N000C 1N253N
1N253N 1N253N
1N253N 1N000B
答案 0 :(得分:1)
这是一个将生成此输出的选择:
SELECT
MIN(Account) OVER (PARTITION BY "key") AS "key",
Account
FROM yourTable;
适用于大多数数据库的常规更新查询可能是:
UPDATE yourTable t1
SET "key" = (SELECT MIN(t2.Account) FROM yourTable t2 WHERE t2."key" = t1."key");
答案 1 :(得分:0)
类似的事情可能起作用:
UPDATE TABLE A
SET A.KEY = (SELECT TOP 1 B.ACCOUNT FROM TABLE B WHERE B.KEY = A.KEY)