Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Update заpапрос  [new]
pavlov
Member

Откуда:
Сообщений: 69
Привет всем!
Есть таблица с полями:
Start datetime
Final datetime

нужно сделать так, чтобы поле Final было равно полю Start следующей
записи:

Start Final
-------------------- --------------------
2005-01-10 12:00:00 2005-01-10 12:30:00
2005-01-10 12:30:00 2005-01-10 14:15:00
2005-01-10 14:15:00 2005-01-10 15:05:00
2005-01-10 15:05:00 NULL

Дело в том что в поле Final у меня сейчас лежат некоректные значения.
Хочу поправить, но что то у меня не выходит.
Помогите написать UPDATE запрос.

Зарание благодарен.
31 янв 05, 09:21    [1286048]     Ответить | Цитировать Сообщить модератору
 Re: Update заpапрос  [new]
Дядя Эдик
Member

Откуда:
Сообщений: 4
курсор тебе поможет
31 янв 05, 09:36    [1286072]     Ответить | Цитировать Сообщить модератору
 Re: Update заpапрос  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Вот чтото в этом роде (прошу прощения за то что ненаучился до сих пор вставлять как положено SQL-код)


DECLARE
@time datetime

SET @time = GetDate()

UPDATE USERTABLE
SET Final_datetime = @time
WHERE Final_datetime = NULL

INSERT USERTABLE VALUES(Start_datetime,NULL)
31 янв 05, 09:45    [1286092]     Ответить | Цитировать Сообщить модератору
 Re: Update заpапрос  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
SanyL
...прошу прощения за то что ненаучился до сих пор вставлять как положено SQL-код...
Достаточно просто обрамить его тегами
[src][/SRC]
31 янв 05, 09:48    [1286103]     Ответить | Цитировать Сообщить модератору
 Re: Update заpапрос  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Да относительно вопроса.... Гораздо умнее былобы отказаться вообще от поля
Final_datetime - оно ведь дублирует следующий Start_datetime поэтому достаточно всего навсего иметь только Start_datetime чтобы знать начало и конец процесса ну и самосабой его ид
31 янв 05, 09:51    [1286118]     Ответить | Цитировать Сообщить модератору
 Re: Update заpапрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
UPDATE a SET Final_datetime = (select top 1 from  USERTABLE b WHERE b.Final_datetime > a.Final_datetime ORDER BY b.Final_datetime)
FROM USERTABLE a
При условии что Final_datetime содержит уникальные значения.
31 янв 05, 09:59    [1286140]     Ответить | Цитировать Сообщить модератору
 Re: Update заpапрос  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
небольшая погрешность
DECLARE
@time datetime

SET @time = GetDate()

UPDATE USERTABLE
SET Final_datetime = @time
WHERE Final_datetime = NULL

INSERT USERTABLE VALUES([b]@time[/b],NULL)
31 янв 05, 10:01    [1286148]     Ответить | Цитировать Сообщить модератору
 Re: Update заpапрос  [new]
pavlov
Member

Откуда:
Сообщений: 69
Спасибо Glory!
То что нужно.
31 янв 05, 10:29    [1286250]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить