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

Получается:

введите сюда описание изображения

→ Ссылка