상관 관계가있는 두 개의 하위 쿼리로이 작업을 수행 할 수 있습니다. 여기
create table #YourTable (RowNumber int identity(1,1), [Value] int null)
insert into #YourTable
values
(10),
(null),
(null),
(null),
(null),
(null),
(null),
(null),
(20),
(null),
(null),
(null),
(null),
(30),
(null),
(40),
(null),
(null),
(50)
select
t.RowNumber
,OldVal = t.Value
,NewVal = case
when t.[Value] is null
then (select t3.[Value]
from #YourTable t3
where t3.RowNumber = (select max(RowNumber)
from #YourTable t2
where t2.RowNumber < t.RowNumber and t2.Value is not null)
)
else [Value]
end
from #YourTable t
order by
t.RowNumber
drop table #YourTable
테이블을 업데이트하려는 경우, 당신이 그 (새 테스트 데이터를) 할 것 방법이다.
create table #YourTable (RowNumber int identity(1,1), [Value] int null)
insert into #YourTable
values
(10),
(null),
(null),
(null),
(5),
(null),
(null),
(null),
(20),
(null),
(15),
(null),
(null),
(30),
(null),
(40),
(null),
(null),
(50),
(null),
(null)
update t
set [Value] = case
when t.[Value] is null
then (select t3.[Value]
from #YourTable t3
where t3.RowNumber = (select max(RowNumber)
from #YourTable t2
where t2.RowNumber < t.RowNumber and t2.Value is not null)
)
else [Value]
end
from #YourTable t
select * from #YourTable order by RowNumber
는 테이블이 업데이트되면, 다음 삽입 문은 값이 IS NULL
를 삽입하거나하지 않을 경우 확인해야하며이 경우, 마지막 값으로 설정합니다. 즉, 우리가 아래 NULL
를 삽입되지 않기 때문에 여기에
우리가하는
NULL
따라서 삽입 된 값이 실제로 그런 다음 마지막 테스트 테이블
declare @valToInsert int = null
insert into #YourTable
select case when @valToInsert is null then (select top 1 [Value] from #YourTable order by RowNumber desc) else @valToInsert end
을 기반으로 50됩니다 삽입 ...이 같은 것 실제 값을 삽입 할 것입니다
declare @valToInsert int = 14
insert into #YourTable
select case when @valToInsert is null then (select top 1 [Value] from #YourTable order by RowNumber desc) else @valToInsert end
귀하의 답변은 중간에 있습니다. 귀하의 코드를 구현하려하지만 잘못된 데이터로 일부 null 값을 덮어 쓰는 것을 발견했습니다. 이러한 null 값이 100 % 정확해야합니다. – AlanPear
내 업데이트를 확인하십시오 – AlanPear
방금 첫 번째 열에 대해 완전히 다른 값을 구성했습니다. 이 열에 대한 실제 데이터는 무엇입니까? 편집에서 설명한대로 "집합"을 결정하는 것은 무엇입니까? 행의 첫 글자? 등 ... 당신은 구체적이어야합니다. 원래의 대답은 원래의 질문에 완벽했습니다. – scsimon