Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 update текущей строки значением с предыдущей  [new]
temoxa
Member

Откуда:
Сообщений: 405
Всем привет! Как можно обновить значение Fromm предыдущем значением Till?

К сообщению приложен файл. Размер - 19Kb
25 июл 12, 12:43    [12913304]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
temoxa
Member

Откуда:
Сообщений: 405
2 столбец - Fromm, третий - Till.
25 июл 12, 12:44    [12913314]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
temoxa,

для начала определиться каким образом они отсортированы
25 июл 12, 13:09    [12913504]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
temoxa
Member

Откуда:
Сообщений: 405
WarAnt,

сортировка по id!
там еще один столбец есть - id

а внутри id по Fromm.
25 июл 12, 13:13    [12913542]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
temoxa,

update t
set Fromm = t2.till
from table t 
join (select t.id,max(t1.id) lid from table t join table t1 on t1.id < t.id group by t.id) t1 on t1.id = t.id
join table t2 on t2.id = t1.lid


для версий выше 2000 можно cross apply пользовать
25 июл 12, 13:21    [12913606]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
temoxa
Member

Откуда:
Сообщений: 405
WarAnt, что-то не клеется! вы пробовали скрипт на данных?
25 июл 12, 13:36    [12913704]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
temoxa
WarAnt, что-то не клеется! вы пробовали скрипт на данных?
Еще и пробовать за вас? Ничего не треснет?
25 июл 12, 13:36    [12913710]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
temoxa
Member

Откуда:
Сообщений: 405
Гавриленко Сергей Алексеевич, пробовать не надо. я просто спросил...
25 июл 12, 13:43    [12913749]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
WarAnt
temoxa,

update t
set Fromm = t2.till
from table t 
join (select t.id,max(t1.id) lid from table t join table t1 on t1.id < t.id group by t.id) t1 on t1.id = t.id
join table t2 on t2.id = t1.lid


для версий выше 2000 можно cross apply пользовать
... а для SQL2012 - Предложение LAG (Transact-SQL) :))
25 июл 12, 14:14    [12913948]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
temoxa
Member

Откуда:
Сообщений: 405
WarAnt,

разобрался, спасибо! обновляется лишь Fromm другого id! а хотелось бы, чтобы значение Till состояния 0 становилось значением Fromm состояния 1 в разрезе каждого id.. это возможно?
25 июл 12, 14:16    [12913956]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
temoxa
WarAnt,

разобрался, спасибо! обновляется лишь Fromm другого id! а хотелось бы, чтобы значение Till состояния 0 становилось значением Fromm состояния 1 в разрезе каждого id.. это возможно?


Возможно все. А если сделать тестовые данные и результат, который ожидаете получить, то возможно и получится что-то.
25 июл 12, 14:22    [12914001]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
temoxa
WarAnt,

разобрался, спасибо! обновляется лишь Fromm другого id! а хотелось бы, чтобы значение Till состояния 0 становилось значением Fromm состояния 1 в разрезе каждого id.. это возможно?


ну дак кто за вас постановку задачи будет додумывать:))
25 июл 12, 14:29    [12914044]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
temoxa
WarAnt,

разобрался, спасибо! обновляется лишь Fromm другого id! а хотелось бы, чтобы значение Till состояния 0 становилось значением Fromm состояния 1 в разрезе каждого id.. это возможно?



update t set till = t1.fromm
from table t join table t1 on t1.id=t.id and t1.состояние = 1
where t.состояние=0
25 июл 12, 14:33    [12914079]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
temoxa
Member

Откуда:
Сообщений: 405
WarAnt, что-то все не то...

смотри у меня есть данные:

К сообщению приложен файл. Размер - 75Kb
25 июл 12, 15:41    [12914572]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
temoxa
Member

Откуда:
Сообщений: 405
WarAnt,

я хочу на выходе получить следующий набор (как пример на нескольких записях):

К сообщению приложен файл. Размер - 44Kb
25 июл 12, 15:43    [12914590]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
temoxa
Member

Откуда:
Сообщений: 405
WarAnt,

спасибо за понимание...
25 июл 12, 15:45    [12914606]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
temoxa
Member

Откуда:
Сообщений: 405
iap,

мда, на сколько функция LAG j,ktuxbkf задание то... но увы у меня 2008R2((
25 июл 12, 15:59    [12914725]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
temoxa
WarAnt,

я хочу на выходе получить следующий набор (как пример на нескольких записях):


К сообщению приложен файл. Размер - 14Kb
25 июл 12, 16:04    [12914759]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
_ч_
Member

Откуда:
Сообщений: 1447
Гавриленко Сергей Алексеевич,

Хорошо вы ответили =)
25 июл 12, 16:07    [12914804]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
temoxa
WarAnt, что-то все не то...

смотри у меня есть данные:


повторюсь, какая постановка такой и результат:)

зы
Сергей Алексеевич уже вариант показал.
25 июл 12, 16:10    [12914825]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
temoxa
WarAnt,

я хочу на выходе получить следующий набор (как пример на нескольких записях):


не приблизил к истине чего все таки нужно.
25 июл 12, 16:11    [12914842]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
temoxa
Member

Откуда:
Сообщений: 405
Гавриленко Сергей Алексеевич,

спс, все работает!
25 июл 12, 16:17    [12914884]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
_ч_
Member

Откуда:
Сообщений: 1447
У меня так получилось:

К сообщению приложен файл. Размер - 35Kb
25 июл 12, 16:25    [12914936]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
temoxa
Member

Откуда:
Сообщений: 405
Гавриленко Сергей Алексеевич,

работает... но первые и последние данные соскакивают..
что-то не то...

К сообщению приложен файл. Размер - 99Kb
25 июл 12, 16:58    [12915187]     Ответить | Цитировать Сообщить модератору
 Re: update текущей строки значением с предыдущей  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
temoxa
Гавриленко Сергей Алексеевич,

работает... но первые и последние данные соскакивают..
что-то не то...
Я не телепат, чтобы прямо из вашей головы угадать, что вам это надо было в разрезе Mobitel_id.

select
    cur.[Mobitel_id]
    , cur.[Moving]
    , [Fromm]           = isnull(prev.[Till], cur.[Fromm])
    , cur.[Till]
from    [смотри у меня есть данные] cur
outer apply (
    select top 1
        x.[Till]
    from    [смотри у меня есть данные] x
    where
        x.[Fromm]           < cur.[Fromm]
        and x.Mobitel_id    = cur.Mobitel_id
    order by x.[Fromm] desc
) prev
order by cur.[Fromm]
25 июл 12, 17:03    [12915226]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить