Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Пронумеровать до определенного числа  [new]
sttt
Member

Откуда:
Сообщений: 24
Как пронумеровать записи до определенного числа, например до 100 и сбросить нумерацию с 1, и сначала?
12 сен 16, 15:34    [19654964]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
xenix
Guest
NTILE()
12 сен 16, 15:37    [19654981]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
кролик-зануда
Guest
sttt,
(ROW_NUMBER()over(order by ...)-1)%100 +1
12 сен 16, 15:38    [19654995]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
кролик-зануда
Guest
xenix
NTILE()

даже представить себе боюсь как это должно выглядеть
12 сен 16, 15:40    [19655005]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
sttt
Member

Откуда:
Сообщений: 24
кролик-зануда,

забыл сказать, что у меня mssql2000)))
12 сен 16, 15:48    [19655055]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
sttt
кролик-зануда,

забыл сказать, что у меня mssql2000)))
Тогда читайте FAQ как нумеровать записи.
12 сен 16, 15:58    [19655114]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
sttt
Member

Откуда:
Сообщений: 24
Гавриленко Сергей Алексеевич,

нумеровать получается, но не получается нумеровать так:
1, 2, 3, 1, 2, 3, 1, 2, 3 получается 1, 2, 3, 4, 5, 6, 7, 8, 9
нумерация не привязана к данным, только ограничение
по строкам, каждая четвертая запись начинается с единицы.
12 сен 16, 16:12    [19655184]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
кролик-зануда
Guest
sttt,

ну так подставьте ваше "нумеровать получается" вместо row_number()
12 сен 16, 16:16    [19655208]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
sttt
Member

Откуда:
Сообщений: 24
кролик-зануда,

ругается гадина:
drop table #tmpRowNum
go
CREATE TABLE #tmpRowNum (
    ROWID INT IDENTITY(1,1),
    ID INT
)
go
INSERT INTO #tmpRowNum
    (ID)
    SELECT ID
        FROM t_robot_doc_out_status
        ORDER BY id
go
select * from #tmpRowNum over(order by id)-1)%100 +1
12 сен 16, 16:21    [19655249]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
xenix
Guest
over()
не поддерживается в SQL 2000
12 сен 16, 16:23    [19655257]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
sttt
Member

Откуда:
Сообщений: 24
xenix,

и я о том)), чем заменить?
12 сен 16, 16:24    [19655264]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
sttt,

select * from #tmpRowNum over(order by id)-1)%100 +1

интересная интерпретация:)

вообще, если не ошибаюсь, то в один проход не получится в 2к, так, что либо курсор либо цикл
12 сен 16, 16:25    [19655277]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
xenix
Guest
sttt,
https://www.sql.ru/faq/faq_topic.aspx?fid=126
12 сен 16, 16:26    [19655279]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
кролик-зануда
Guest
sttt,

over() и не нужен, вы же уже все пронумеровали.

select (ROWID-1)%100+1 Rowid,ID from #tmpRowNum  order by ID


xenix - а вы принципиально не думаете, насколько ваши ответы подходят к вопросам?
12 сен 16, 16:26    [19655283]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
кролик-зануда
Guest
кролик-зануда,

order by только для наглядности.
12 сен 16, 16:28    [19655294]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
sttt
Member

Откуда:
Сообщений: 24
sttt,
есть такая штука, но не пойму, как подобраться:
SELECT *
FROM (
SELECT *, (
SELECT COUNT(*)
FROM MyTable AS counter
WHERE counter.PartitionByColumn = MyTable.PartitionByColumn
AND counter.OrderByColumn >= MyTable.OrderByColumn
) AS rowNumber
FROM MyTable
) AS r1
WHERE r1.rowNumber = 1

Same code in SQL Server 2005 would look like this:

SELECT * FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY PartitionByColumn
ORDER BY OrderByColumn DESC) AS rowNumber FROM MyTable) AS rw1
WHERE rw1.rowNumber = 1
12 сен 16, 16:28    [19655297]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
sttt
Member

Откуда:
Сообщений: 24
кролик-зануда,

Спасибо большущее, чтобы я без вас делал
12 сен 16, 16:31    [19655312]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
sttt,

ота штука +
%100+1
12 сен 16, 16:31    [19655313]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
sttt
Member

Откуда:
Сообщений: 24
TaPaK,

это что?
12 сен 16, 16:34    [19655319]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
SELECT 
	Rn,
	*
FROM
(
	SELECT *,
		(
		SELECT COUNT(1)
		FROM sysobjects
		WHERE 
			Id < x.Id
		)%100+1 as Rn
	FROM sysobjects x
) a
12 сен 16, 16:34    [19655321]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать до определенного числа  [new]
sttt
Member

Откуда:
Сообщений: 24
TaPaK,

невероятно!!!!, но очевидно))) спасиб!!!!!!!!!!!!!!!!!
12 сен 16, 16:35    [19655326]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить