Update через цикл While
Подскажите пожалуйста: Есть таблица t1 в ней есть поля допустим ID, FirstValue, SecondValue
ID FirstValue SecondValue
1 null 1.1 клиент
2 null Вася
3 null Петя
4 null 1.2 партнеры
5 null Газпром
6 null USA
нужно проитерировать чтоб получился такой результат,только не курсором а циклом:
ID FirstValue SecondValue
1 1.1 клиент 1.1 клиент
2 1.1 клиент Вася
3 1.1 клиент Петя
4 1.2 партнеры 1.2 партнеры
5 1.2 партнеры Газпром
6 1.2 партнеры USA
Подскажите как? можно на словах)
Ответы (1 шт):
Автор решения: Motion Graphics
→ Ссылка
Разобрался спасибо!
set nocount on
if isnull(object_id('tempdb..#t1'),0) <> 0
drop table #t1
create table #t1 (
ID int identity(1,1),
FirstValue varchar(20),
SecondValue varchar(20)
)
insert into #t1 (FirstValue, SecondValue)
select '', '1.1 Клиенты' union all
select '', 'Клиент 1' union all
select '', 'Клиент 2' union all
select '', 'Клиент 3' union all
select '', '1.2 Партнеры' union all
select '', 'Партнер 1' union all
select '', 'Партнер 2' union all
select '', 'Партнер 3'
begin tran
declare @ID int,
@SecondValue varchar(20)
select @ID = 0,
@SecondValue = ''
while 1 = 1
begin
select @ID = min(ID)
from #t1
where ID > @ID
if @ID is null break
select @SecondValue = SecondValue
from #t1
where ID = @ID
if isnull(@SecondValue,'') <> ''
begin
update #t1
set FirstValue = (
select top 1 SecondValue
from #t1
where ID <= @ID
and SecondValue like '1.%'
order by ID desc
)
where ID = @ID
end
end
rollback
Получается:
