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

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

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

INSERT INTO @tbTable
SELECT
ID
FROM
sysobjects

SELECT * FROM @tbTable
...
Рейтинг: 0 / 0
29.04.2001, 21:32
    #32005035
Andrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Enumerate records
Если 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
03.05.2001, 12:27
    #32005106
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Enumerate records
Короче, нормального человеческого способа нет. Очень жаль. Все приведенные примеры используют либо временные таблицы (переменные), либо дополнительные поля, которые были созданы заранее. Что трудно назвать универсальным способом, равно как и быстро работающим.
Всем спасибо за советы!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Enumerate records / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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