Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Предыдущее значение поля +1 / 7 сообщений из 7, страница 1 из 1
21.12.2020, 08:30
    #40029610
gozip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предыдущее значение поля +1
Здравствуйте, уважаемые.

Я новичок в базе данных и никак не могу сообразить вот по какому делу. Есть таблица с полями ID (int), Description (Varchar(50)).
Значения в поле ID разные, Само поле не проиндексировано, не ключевое
ID Description
1 ASD
4 ASDD
2 ASDFE
3 ASDFFG

и т.д

Мне нужно для всех последующих строки начиная со второй взять минимальное значение по полю ID (т.е 1), увеличить его на 1, и записать во вторую ячейку. И так далее для всех последующих ячеек. Т.е должно выглядеть так:
ID Description
1 ASD
2 ASDD
3 ASDFE
4 ASDFFG

Как это сделать через sql update? Подскажите пожалуйста, а то в голову что-то ничего не приходит. Заранее огромное спасибо!
...
Рейтинг: 0 / 0
21.12.2020, 10:42
    #40029645
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предыдущее значение поля +1
gozip
Мне нужно для всех последующих строки начиная со второй
С сортировкой по Description?

gozip
Как это сделать через sql update? Подскажите пожалуйста, а то в голову что-то ничего не приходит. Заранее огромное спасибо!
row_number, или LAG
...
Рейтинг: 0 / 0
21.12.2020, 13:42
    #40029725
gozip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предыдущее значение поля +1
alexeyvg
gozip
Мне нужно для всех последующих строки начиная со второй
С сортировкой по Description?

Без сортировки.

gozip
Как это сделать через sql update? Подскажите пожалуйста, а то в голову что-то ничего не приходит. Заранее огромное спасибо!
row_number, или LAG


А можно примерчик какой-нибудь? Спасибо.
...
Рейтинг: 0 / 0
21.12.2020, 13:46
    #40029730
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предыдущее значение поля +1
gozip
А можно примерчик какой-нибудь? Спасибо.
Так вы для своего вопроса сделайте пример, вы же делали тестовый код для этого?
А потом мы его тут поменяем, для корректной нумерации.
...
Рейтинг: 0 / 0
21.12.2020, 16:44
    #40029812
gozip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предыдущее значение поля +1
alexeyvg,

Делаю вот так, но обновление идет только на первую запись, где условие ID <> 1

Код: sql
1.
2.
3.
4.
update top(1) TExp
set ID = A.NextID
from (select min(ID)+1 as NextID from TExp) A
where ID <> 1



Как сделать чтобы циклом проходил по всем записям, начиная со второй, я не знаю.
...
Рейтинг: 0 / 0
21.12.2020, 17:40
    #40029850
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предыдущее значение поля +1
Код: sql
1.
2.
3.
4.
5.
6.
-- это для "понимания"
select *, newID = row_number() over(order by Description) from TExp;

-- это делает "как пожелали"
update t set ID = newID
from (select *, newID = row_number() over(order by Description) from TExp) as  t
...
Рейтинг: 0 / 0
21.12.2020, 20:41
    #40029902
gozip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предыдущее значение поля +1
aleks222,

Большое спасибо! То, что доктор прописал!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Предыдущее значение поля +1 / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]