gpt4 book ai didi

sql - 如何用下一行中的第一个非零值更新零?

转载 作者:行者123 更新时间:2023-12-03 01:51:11 25 4
gpt4 key购买 nike

如何用 col2 中的下一个非零值更新零?

例如 - 我需要将 col2 中的前 3 行更新为值 2。类似地,我需要将 2 之后的接下来的两个值更新为 3(对于 RN 5,6)

基本上,在每个尾随零之后,如果有一个非零,则应该在上面的尾随零中更新。如何使用循环过程来做到这一点?

enter image description here

最佳答案

这是一个简单的查询,您只需使用OUTER APPLY即可实现此目的

CREATE TABLE #tmp(rn INT IDENTITY(1,1), col1 VARCHAR(50), col2 INT, col3 DATE)
INSERT INTO #tmp VALUES
('ABC', 0, '2017-01-01'),
('ABC', 0, '2017-01-01'),
('ABC', 0, '2017-01-01'),
('ABC', 2, '2017-01-01'),
('ABC', 0, '2014-02-01'),
('ABC', 0, '2013-02-01'),
('ABC', 3, '2013-01-01'),
('ABC', 0, '2017-01-01'),
('ABC', 0, '2017-01-01'),
('ABC', 0, '2017-01-01'),
('ABC', 0, '2017-01-01'),
('ABC', 7, '2017-01-01')


UPDATE t SET t.col2 = t2.col2
FROM #tmp t
OUTER APPLY(SELECT TOP 1 col2 FROM #tmp WHERE rn >= t.rn AND col2 > 0) t2

输出:

rn  col1    col2    col3
1 ABC 2 2017-01-01
2 ABC 2 2017-01-01
3 ABC 2 2017-01-01
4 ABC 2 2017-01-01
5 ABC 3 2014-02-01
6 ABC 3 2013-02-01
7 ABC 3 2013-01-01
8 ABC 7 2017-01-01
9 ABC 7 2017-01-01
10 ABC 7 2017-01-01
11 ABC 7 2017-01-01
12 ABC 7 2017-01-01

关于sql - 如何用下一行中的第一个非零值更新零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47881227/

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