Member 12588133 Ответов: 1

Как сгенерировать серийные номера для каждого внешнего ключа и вставить их в другую таблицу?


Как я могу сгенерировать серийный номер для каждого refno нет и вставить их в другой
(таблица Б) .Номер накладной будет генерировать на основе таблицы Б (макс()+1 из таблицы B) ? MS SQL 2012.

Table A

packname                            refno
----------------------------------- -----------
Demo 250 Channels                   1
qqq                                 1
qqq                                 3
qqq                                 3
Demo 250 Channels                   1
Demo 250 Channels                   1

Result I want
Table B

packname                            refno      InvoiceNo
----------------------------------- --------------------
Demo 250 Channels                   1                1
qqq                                 1                2
qqq                                 1                3
qqq                                 3                1
Demo 250 Channels                   3                2
Demo 250 Channels                   5                1


Что я уже пробовал:

Выберите packname, refno,
ROW_NUMBER () OVER (PARTITION BY refno ORDER BY (SELECT 1)) InvoiceNo
Из Табл. 1

Этот процесс выполняется каждый день и извлекает некоторую запись и вставляет в таблицу 2, так что когда мы вставляем в таблицу 2 первый раз, то это нормально, но когда мы запускаем это во второй раз, то он генерирует дубликат номера

The Praveen Singh

использовать временную таблицу с автоматическим колонн личности

Tomas Takac

В вашем примере есть разница в refno между таблицами A и B. второе "ORDER BY (SELECT 1)" выглядит очень подозрительно - вы должны использовать реальный столбец, возможно, какое-то поле datetime. Наконец, я не понимаю, как это должно работать. Вы вставляете из A В B и генерируете InvoiceNo. Но что происходит с записями в A, удаляются ли они, и в следующий раз вы вставляете только недавно добавленные записи с момента последнего запуска? Или А и В имеют одну и ту же дату, за исключением счета-фактуры, конечно?

1 Ответов

Рейтинг:
1

mansi chaudhari

Попробовать это

SELECT packname, refno,ROW_NUMBER() OVER (PARTITION BY refno ORDER BY Packname) InvoiceNo
FROM Table A