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

Откуда:
Сообщений: 572
Проблема:

Копирую даты из одной таблицы в другую по каждому работнику.
В ту, в которую копирую, нужно, если записей несколько, внести нумерацию

10380 1 10/1/2009 12:00:00 AM
10380 2 11/3/2009 12:00:00 AM
10380 3 11/4/2009 12:00:00 AM
10380 4 11/5/2009 12:00:00 AM

т.е 1,2,3,4 и так далее зависят от того сколько записей для этого работника.

Как это сделать?

Нужно пройти по таблице где все данные о работниках, для каждого EmpID сделать выборку из другой таблицы(если данные есть), а потом в третью занести всё, как показано выше.

Вот с этой нумерацией и застрял.
Спасибо
26 ноя 09, 02:10    [7979870]     Ответить | Цитировать Сообщить модератору
 Re: While, Fetch ???....нужно инкриментно с номером добавить записи  [new]
слоненок
Member

Откуда:
Сообщений: 479
pshik, row_number() - rank()?
26 ноя 09, 02:23    [7979880]     Ответить | Цитировать Сообщить модератору
 Re: While, Fetch ???....нужно инкриментно с номером добавить записи  [new]
i2akai1
Member

Откуда: Петербург
Сообщений: 217
pshik,
old school :)
declare @emp int, @date datetime, @i int
declare CEmp cursor for select EmpID from T1
open CEmp
fetch next from CEmp into @emp
while @@ferch_status = 0
begin
  set @i = 1
  declare CDate cursor for select Date from T2 where EmpID = @emp order by Date
  open CDate
  fetch next from CDate into @date
  while @@fetch_status = 0
  begin
    insert T3 select @emp, @i, @date
    set @i = @i + 1
    fetch next from CDate into @date
  end
  close CDate
  deallocate CDate
  fetch next from CEmp into @emp
end
close CEmp
deallocate CEmp

26 ноя 09, 02:27    [7979885]     Ответить | Цитировать Сообщить модератору
 Re: While, Fetch ???....нужно инкриментно с номером добавить записи  [new]
pshik
Member [заблокирован]

Откуда:
Сообщений: 572
Проблема:

Копирую даты из одной таблицы в другую по каждому работнику.
В ту, в которую копирую, нужно, если записей несколько, внести нумерацию

10380 1 10/1/2009 12:00:00 AM
10380 2 11/3/2009 12:00:00 AM
10380 3 11/4/2009 12:00:00 AM
10380 4 11/5/2009 12:00:00 AM
10381 1 11/1/2009 12:00:00 AM
10381 2 12/3/2009 12:00:00 AM
10381 3 12/4/2009 12:00:00 AM

т.е 1,2,3,4 и так далее зависят от того сколько записей для этого работника.

Как это сделать?

Нужно пройти по таблице где все данные о работниках, для каждого EmpID сделать выборку из другой таблицы(если данные есть), а потом в третью занести всё, как показано выше.

Вот с этой нумерацией и застрял.
Спасибо
26 ноя 09, 02:27    [7979886]     Ответить | Цитировать Сообщить модератору
 Re: While, Fetch ???....нужно инкриментно с номером добавить записи  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
pshik,
row_number() over(partition by employee_id order by date_time)
26 ноя 09, 02:30    [7979890]     Ответить | Цитировать Сообщить модератору
 Re: While, Fetch ???....нужно инкриментно с номером добавить записи  [new]
pshik
Member [заблокирован]

Откуда:
Сообщений: 572
DeColo®es
pshik,
row_number() over(partition by employee_id order by date_time)


вот так я сделал, этот оказалось и легче и правильнее, чем сложности с циклами

всем спасибо
26 ноя 09, 08:02    [7980055]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить