powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Enumerate records
8 сообщений из 8, страница 1 из 1
Enumerate records
    #32005026
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли, делая select, добавить вычисляемое поле, значение которого будет 1, 2, ... Чтобы перенумеровать записи по порядку именно внутри данного select'а ? Вот в Oracle такая фича точно есть, а как такое в MSSQL сделать ?
...
Рейтинг: 0 / 0
Enumerate records
    #32005027
Какой SQL ??
...
Рейтинг: 0 / 0
Enumerate records
    #32005028
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
7.0 или 2000

UDF, опирающиеся на какие-либо глобальные переменные, таблицы и т.д. не хотелось бы использовать. Нужно что-то привязанное только к select'у
...
Рейтинг: 0 / 0
Enumerate records
    #32005029
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2000
Через временную таблицу
SELECT IDENTITY(int, 1,1) AS ID_Num,...other fiedls from MyTable... INTO #TempTable
FROM MyTable
...
Рейтинг: 0 / 0
Enumerate records
    #32005031
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно еще так (если в таблице ttt уже есть поле для хранения номера NumberField):

declare @I int
set @I=0
update ttt set @I=NumberField=@I+1
where NameField like 'SomeValue%'
select * from ttt

Использован прием, о котором я узнал из рассылки Александра Гладченко "MS SQL Server - дело тонкое...".
...
Рейтинг: 0 / 0
Enumerate records
    #32005032
Можно попробовать и так
Думаю работать будет быстрее, нежели через #

DECLARE @tbTable TABLE (
Field1 int IDENTITY(1,1)
, Field2 smallint
)

INSERT INTO @tbTable
SELECT
ID
FROM
sysobjects

SELECT * FROM @tbTable
...
Рейтинг: 0 / 0
Enumerate records
    #32005035
Andrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если select отсортирован по какому либо полю (или полям), например по полю Field1), то можно так:
DECLARE @tbl TABLE (Field1 int , Field2 int)
select t1.Field1 , t1.Field2, count(t2.Field1)
from @tbl t1 inner join @tbl t2
on t1.Field1 >= t2.Field1
group by t1.Field1 , t1.Field2
Таким образом можно организовать возврастающую (убывающую) нумерацию, нарастающий (убывающий) итог по всем записям в select, по группам и т.д.
Подробнее смотри http://support.microsoft.com/support/kb/articles/Q186/1/33.ASP.
Или многочисленные ответы на подобные вопросы SergSuper в этой конфе. Просто набери в строке поиска "Нумерация" или/и "Нарастающий итог"
...
Рейтинг: 0 / 0
Enumerate records
    #32005106
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, нормального человеческого способа нет. Очень жаль. Все приведенные примеры используют либо временные таблицы (переменные), либо дополнительные поля, которые были созданы заранее. Что трудно назвать универсальным способом, равно как и быстро работающим.
Всем спасибо за советы!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Enumerate records
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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