gpt4 book ai didi

sql - 如何扫描表格的每一行,并根据前一行更新当前行?

转载 作者:行者123 更新时间:2023-12-04 23:47:22 24 4
gpt4 key购买 nike

我需要使用以下逻辑更新当前行:

  1. 如果当前行为空,则将其设置为上一行
  2. 如果当前行不为空,则不执行任何操作

第一行不为空,则随机出现NULL

这些 NULL 需要使用前面提到的逻辑进行更新

例如

 1. 1
2. null
3. null
4. 2
5. null
6. null

需要更新为

 1. 1
2. 1
3. 1
4. 2
5. 2
6. 2

如何在 SQL 中实现?

谢谢r

最佳答案

如果连续出现两个 Null 值,您需要定义表中最小的非空值,所以我认为 Outer Apply 可以解决您的问题:

CREATE TABLE #TB(ID Int Identity(1, 1), Value Int)
INSERT INTO #TB([Value]) VALUES(1),(Null),(Null),(2),(Null),(Null)

UPDATE G SET G.Value = GG.Value
FROM
#TB AS G
OUTER APPLY
(SELECT
TOP 1 *
FROM
#TB AS GG
WHERE
GG.Value IS NOT NULL
AND
GG.ID < G.ID
ORDER BY
GG.ID DESC
) AS GG
WHERE
G.Value IS NULL

SELECT * FROM #TB AS T

但请注意,如果第一个值为 Null,它不会为您提供结果,因为您尚未定义此场景的逻辑。

关于sql - 如何扫描表格的每一行,并根据前一行更新当前行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45478979/

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