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

Откуда: Rudnyy
Сообщений: 198
Здравствуйте!
Вопрос такой.
Нужно присвоить полю dopcode номер по порядку
сделал что-то такое
declare @i int, @count int
set @i = 1
set @count = (select count(*) from mdoc_test where date between '14.12.2009' and '14.12.2009')

while @i <= @count
begin
	if @i 
	update mdoc_test
	set dopcode = @i
	where date between '14.12.2009' and '14.12.2009'
	set @i = @i + 1
end
но все значения в поле dopcode получают номер равный @count
как можно реализовать?
sql2000
18 дек 09, 09:29    [8084324]     Ответить | Цитировать Сообщить модератору
 Re: номеровать в update  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
if @i 
опечатка
18 дек 09, 09:31    [8084334]     Ответить | Цитировать Сообщить модератору
 Re: номеровать в update  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
По какому порядку?
18 дек 09, 09:32    [8084339]     Ответить | Цитировать Сообщить модератору
 Re: номеровать в update  [new]
aleks2
Guest
declare @i int
set @i = 1

update mdoc_test
set dopcode = @i, @i = @i + 1
where date between '14.12.2009' and '14.12.2009'

проще будь.
18 дек 09, 09:32    [8084342]     Ответить | Цитировать Сообщить модератору
 Re: номеровать в update  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
aleks2,

ничего умнее не придумал:(
18 дек 09, 09:35    [8084353]     Ответить | Цитировать Сообщить модератору
 Re: номеровать в update  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
--__Александр__--,

dopcode

1
2
3
4
5
18 дек 09, 09:36    [8084359]     Ответить | Цитировать Сообщить модератору
 Re: номеровать в update  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
aleks2,

спасибо помогло, пронумеровалось
numdoc           dopcode

007464		21            
007516		20            
007788		10            
007803		13            
007804		14            
007805		12            
007806		11            
007808		15            

а как можно пронумеровать чтобы минимальный numdoc был с минимальным dopcode?
как-то так

numdoc           dopcode

007464		1            
007516		2            
007788		3            
007803		4           
007804		5            
007805		6           
007806		7            
007808		8   
18 дек 09, 09:49    [8084452]     Ответить | Цитировать Сообщить модератору
 Re: номеровать в update  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
Ну вот я у вас сразу и спрашивал,какой порядок должен быть.
18 дек 09, 09:54    [8084503]     Ответить | Цитировать Сообщить модератору
 Re: номеровать в update  [new]
aleks2
Guest
yaros-hoi
aleks2,

спасибо помогло, пронумеровалось
numdoc           dopcode

007464		21            
007516		20            
007788		10            
007803		13            
007804		14            
007805		12            
007806		11            
007808		15            

а как можно пронумеровать чтобы минимальный numdoc был с минимальным dopcode?
как-то так

numdoc           dopcode

007464		1            
007516		2            
007788		3            
007803		4           
007804		5            
007805		6           
007806		7            
007808		8   


declare @t table(numdoc varchar(???) primary key clustered, n int identity)

insert @t(numdoc)
select numdoc
from mdoc_test
where date between '14.12.2009' and '14.12.2009'
ORDER BY numdoc

update  T set dopcode = n
FROM mdoc_test T INNER JOIN @t x ON x. numdoc=T.numdoc
where date between '14.12.2009' and '14.12.2009'
18 дек 09, 11:10    [8085205]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить