powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите написать красивый запрос
15 сообщений из 15, страница 1 из 1
Помогите написать красивый запрос
    #32073554
Mitja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сталкнулся вот с такой задачкой и нет нормальных идей по ее реализации.В упрощенном виде это выглядит так. Имеется простая табличка с полями номер, собственно данные и порядок в группе соответственно (id, data, npp)
Необходимо пронумеровать данные в каждой группе. Вот пример на входе
1 a 0
2 a 0
3 a 0
4 b 0
5 b 0
6 c 0
7 c 0
8 c 0
на выходе
1 a 1
2 a 2
3 a 3
4 b 1
5 b 2
6 c 1
7 c 2
8 c 3

Лезет только в голову через циклы и динамические запросом, но может можно как то одним запросом это реализовать. Табличка не большая, так что быстродействие не важно.
...
Рейтинг: 0 / 0
Помогите написать красивый запрос
    #32073571
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select
t1.id,
t1.data,
npp = (select count(t2.id) from table t2 where t2.id<=t1.id)
from table t1
order by
t1.id,
t1.data
...
Рейтинг: 0 / 0
Помогите написать красивый запрос
    #32073572
Фотография Alexes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
update t
    set npp = (select count(*) from your_table where data = t.data and id<=t.id)
    from your_table t
...
Рейтинг: 0 / 0
Помогите написать красивый запрос
    #32073573
Александр Азаркович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
update t1
	set t1.npp=(select count(*) from tableName t2 where t2.dat=t1.dat and t2.id<=t1.id)
	from tableName t1
...
Рейтинг: 0 / 0
Помогите написать красивый запрос
    #32073577
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to 3JIA9I CyKA, Alexes,Александр Азаркович

SUPER !

Снимаю шляпу ! :)
Я искренне думал, что нельзя без цикла ....
...
Рейтинг: 0 / 0
Помогите написать красивый запрос
    #32073578
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sorry. Хреново вопрос прочитал.
...
Рейтинг: 0 / 0
Помогите написать красивый запрос
    #32073579
Александр Азаркович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Alexes:
прям слово в слово :)
...
Рейтинг: 0 / 0
Помогите написать красивый запрос
    #32073586
Mitja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Alexes,Александр Азаркович - вы как за одним столом сидели. Сила. Это ж другое дело, спасибо.
...
Рейтинг: 0 / 0
Помогите написать красивый запрос
    #32073587
u001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Например так:
declare @i int
declare @last char(1)
update t1 set @i=npp=case when @last=data then @i+1 else 1 end, @last=data
...
Рейтинг: 0 / 0
Помогите написать красивый запрос
    #32073590
Фотография Тимур
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть вариант с созданием временной таблицы
Код: plaintext
1.
2.
SELECT ot.Field1, Num = IDENTITY(int,  1 ,  1 )
INTO #NewTable FROM OldTable ot
...
Рейтинг: 0 / 0
Помогите написать красивый запрос
    #32073597
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to u001

а вот таккая фишка не пройдет, т.к. если данные будут не упорядочены, то нумерация будет неправильной ...

пример таблицы

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
ID          Data Npp         
 ----------- ---- ----------- 
 
 14           v     1 
 15           v     2 
 16           v     3 
 17           s     1 
 18           s     2 
 19           s     3 
 20           s     4 
 21           s     5 
 22           f     1 
 23           f     2 
 24           f     3 
 25           f     4 
 26           f     5 
 27           v     1 
 28           v     2 
 29           v     3 
...
Рейтинг: 0 / 0
Помогите написать красивый запрос
    #32073598
Фотография Тимур
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно добавить Order by, или нет?
...
Рейтинг: 0 / 0
Помогите написать красивый запрос
    #32073605
Mitja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Тимур
с вашим вариантом пронумеруется вся таблица, а нужно ж по группам
re. order by добавить можно
...
Рейтинг: 0 / 0
Помогите написать красивый запрос
    #32073620
Фотография Александр Степанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Sanek
Вариант u001 будет работать правильно при условии существования кластерного индекса на поля, нужные для сортировки.
...
Рейтинг: 0 / 0
Помогите написать красивый запрос
    #32073765
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
23JIA9I CyKA: ТОЛЬКО ВОТ ТАК
select
t1.id,
t1.data,
npp = (select count(t2.id) from #test t2 where t2.id<=t1.id and t2. data = t1. data)
from #test t1
order by
t1.id,
t1.data
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите написать красивый запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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