powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Пронумеровать список
12 сообщений из 12, страница 1 из 1
Пронумеровать список
    #32033249
Костя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, как получить пронумерованный список записей из базы (MSSQL). Например, надо получить пронумерованный по порядку список наименований.
...
Рейтинг: 0 / 0
Пронумеровать список
    #32033261
Tulkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кидаешь во временную табличку необходимый отсортированый набор записей ,добоваляешь поле identity,
и селектишь на клиента.
что-то вроде
select ID=identity(int,1,1),поле_1,поле_2...
into #ttt from ...
select * from #ttt
...
Рейтинг: 0 / 0
Пронумеровать список
    #32033272
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проверил ... все работает ....
но вот только можно это организовать без # и в одном селекте
С уважением, MarchCat :ж)
...
Рейтинг: 0 / 0
Пронумеровать список
    #32033284
gena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UDF не поможет?
...
Рейтинг: 0 / 0
Пронумеровать список
    #32033309
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я делаю вот так
insert into @tmp select 0, field1,...
declare @newid int set @new id = 0
update @tmp set
@newid = id = @newid + 1
select * from @tmp
...
Рейтинг: 0 / 0
Пронумеровать список
    #32033318
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю, что у каждого есть свой способ, но интересует лучший - простой и небольшой по объему (оптимальный).
Кто еще может предложить способ?
Обещаю использовать лучший!!!
...
Рейтинг: 0 / 0
Пронумеровать список
    #32033330
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой способ
нумерую записи на стороне клиента при непосредственном выводе в экранную форму
...
Рейтинг: 0 / 0
Пронумеровать список
    #32033338
denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чего то не получается запустить в QAnalyser:
1. Есть табл. qqq с полями one, two
делаю:
insert into @tmp select 0,one,two from qqq
declare @newid int set @new id = 0
update @tmp
set @newid = id = @newid + 1
select * from @tmp
Отругал:
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near '@tmp'.
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'id'.
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near '@tmp'.
Server: Msg 170, Level 15, State 1, Line 2
Line 2: Incorrect syntax near '='.
Server: Msg 170, Level 15, State 1, Line 3
Line 3: Incorrect syntax near '@tmp'.
...
Рейтинг: 0 / 0
Пронумеровать список
    #32033345
max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
max
Гость
Необходимо определить временную таблицу:

declare @tmp table(id int IDENTITY(1,1),one <тип>,two <тип>)

insert into @tmp(one,two) select one,two from qqq

Так-же имейте ввиду, что если одно из полей исходной таблицы было первичным ключем его нужно конвертировать. Если one - первичный ключ, то в селекте на его место нужно поставить следующее:

convert(int,one) as one
...
Рейтинг: 0 / 0
Пронумеровать список
    #32033377
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может стоит поискать на клиенте какие-нибудь автовычисляемые столбцы?

Или если есть числовой ключ и записей немного (ну не больше нескольких десятков), то можно использовать такую конструкцию:

create table #tmp (id int,name varchar(10))
insert into #tmp (id,name) values (10,'a')
insert into #tmp (id,name) values (20,'b')
insert into #tmp (id,name) values (30,'c')
insert into #tmp (id,name) values (40,'d')
insert into #tmp (id,name) values (50,'e')

select (select count(*)+1 from #tmp where #tmp.id<t.id) as cnt,id,name from #tmp as t

drop table #tmp
...
Рейтинг: 0 / 0
Пронумеровать список
    #32033414
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vvg_!
А может проще поступить ...
разделить на 10 и все ..... :))))
сам-то тестировал как оно работает .... :))))


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
create table #tmp (id int,name varchar( 10 )) 
insert into #tmp (id,name) values ( 10 ,'a') 
insert into #tmp (id,name) values ( 20 ,'b') 
insert into #tmp (id,name) values ( 30 ,'c') 
insert into #tmp (id,name) values ( 40 ,'d') 
insert into #tmp (id,name) values ( 50 ,'e') 

select (select count(*)+ 1  from #tmp where #tmp.id<t.id) as cnt,id,name from #tmp as t 

drop table #tmp 
...
Рейтинг: 0 / 0
Пронумеровать список
    #32033415
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vvg_!
А нет ... беру свои слова обратно !!!
Пригляделся все ок :)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Пронумеровать список
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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