Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Enumerate records
|
|||
|---|---|---|---|
|
#18+
Можно ли, делая select, добавить вычисляемое поле, значение которого будет 1, 2, ... Чтобы перенумеровать записи по порядку именно внутри данного select'а ? Вот в Oracle такая фича точно есть, а как такое в MSSQL сделать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2001, 18:10 |
|
||
|
Enumerate records
|
|||
|---|---|---|---|
|
#18+
7.0 или 2000 UDF, опирающиеся на какие-либо глобальные переменные, таблицы и т.д. не хотелось бы использовать. Нужно что-то привязанное только к select'у ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2001, 18:36 |
|
||
|
Enumerate records
|
|||
|---|---|---|---|
|
#18+
SQL2000 Через временную таблицу SELECT IDENTITY(int, 1,1) AS ID_Num,...other fiedls from MyTable... INTO #TempTable FROM MyTable ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2001, 19:16 |
|
||
|
Enumerate records
|
|||
|---|---|---|---|
|
#18+
Можно еще так (если в таблице 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 - дело тонкое...". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2001, 19:37 |
|
||
|
Enumerate records
|
|||
|---|---|---|---|
|
#18+
Можно попробовать и так Думаю работать будет быстрее, нежели через # DECLARE @tbTable TABLE ( Field1 int IDENTITY(1,1) , Field2 smallint ) INSERT INTO @tbTable SELECT ID FROM sysobjects SELECT * FROM @tbTable ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2001, 19:50 |
|
||
|
Enumerate records
|
|||
|---|---|---|---|
|
#18+
Если 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 в этой конфе. Просто набери в строке поиска "Нумерация" или/и "Нарастающий итог" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2001, 21:32 |
|
||
|
Enumerate records
|
|||
|---|---|---|---|
|
#18+
Короче, нормального человеческого способа нет. Очень жаль. Все приведенные примеры используют либо временные таблицы (переменные), либо дополнительные поля, которые были созданы заранее. Что трудно назвать универсальным способом, равно как и быстро работающим. Всем спасибо за советы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2001, 12:27 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3579&tid=1826877]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
21ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 214ms |
| total: | 319ms |

| 0 / 0 |
