设置是这样的:
Col1 Col2
12345 12
12348 14
20145 16
00541 Null
51234 22
显然,简化了。我想要做的是通过将 Col2 设置为 Col1 中具有最接近值的任何值的 Col2 值来更新 Col2,无论它是否为 Null(因此在本示例中,第四行应将 Col2 设置为 12)。这是我得到的结果:
UPDATE Temp.dbo.Sheet4
SET Col2 = (SELECT FIRST(Col2)
FROM Temp.dbo.Sheet4
WHERE Col2 IS NOT NULL
ORDER BY ABS(***Col1 from the outside of this select statement*** - Col1))
WHERE Col2 IS NULL
可能不是那么接近。但是我该怎么做呢?我无法完全理解它。我也愿意在 Excel/Access/其他软件中执行此操作,但我认为 SQL Server 是最简单的。
最佳答案
在没有设置数据库的情况下尝试这个有点困难,但这行得通吗?
UPDATE sh
SET sh.Col2 = (SELECT TOP 1 sh_inner.Col2
FROM Temp.dbo.Sheet4 sh_inner
WHERE sh_inner.Col2 IS NOT NULL
ORDER BY ABS(sh.Col1 - sh_inner.Col1))
FROM Temp.dbo.Sheet4 sh
WHERE sh.Col2 IS NULL
关于sql - 用同一张表中的另一个值更新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3506728/