gpt4 book ai didi

SQL Server更新列比较跨行的值

转载 作者:行者123 更新时间:2023-12-03 02:40:34 25 4
gpt4 key购买 nike

我需要通过交叉检查 value2 的值与 value1 的下一行来更新下表的第 3 列

如果相等则 value3 = value1*value2 如果不相等则 value3 = value1

CREATE TABLE #tmpValue1(id INT IDENTITY(1,1), value1 FLOAT, value2 FLOAT, value3 FLOAT)

INSERT INTO #tmpValue1(value1, value2) VALUES
(1, 2), (2,3), (3,4), (4,5),(6,7),(7,8),(8,9)

表#tmpValue1 将如下:

id  value1  value2  value3 (expected output)
1 1 2 1
2 2 3 4
3 3 4 9
4 4 5 16
5 6 7 6
6 7 8 49
7 8 9 64

上面,在 value3 中,第一个更新为 1,因为第一个 Value2 行的 2 与第二行的 value1 的 2 进行比较,因此它将开始从第二个更新。

注意:Value1 和 Value2 只是示例,实际情况可能不同。

最佳答案

我们可以通过使用 LEFT JOIN 来简单地做到这一点,如下所示:

UPDATE t1 SET t1.value3 = (ISNULL(t2.value2,1) * t1.value1)
FROM #tmpValue1 t1
LEFT JOIN #tmpValue1 t2 ON t1.id = t2.id+1
AND t1.value1 = t2.value2

我们应该使用id,它是身份列,有利于执行这样的操作。

关于SQL Server更新列比较跨行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39578010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com