У меня есть источник таблицы SRC
, такие как:Если числовые затем вставить числовыми еще Вставить нечисловую
*Column1*
First
Second
45
Fouth
Теперь я хочу, чтобы вставить эти данные в таблицу DEST (ID, NAME)
с этой логикой:
Если строка является числовой , insert into (ID, NAME) VAUES (45, 'TBD')
.
Если строка не является числовым, генерировать идентификатор и insert into (ID, NAME) VALUES (*GENERATED ID*, NAME).
Я пытался что-то вроде:
DECLARE @i INT;
SELECT @i = MAX (ID) + 1
FROM DEST;
IF (SELECT ISNUMERIC (SELECT Column1 FROM SRC) AS help) = 1
BEGIN
INSERT INTO DEST (ID, NAME) VALUES (45, 'TBD')
END;
ELSE
BEGIN
INSERT INTO DEST (ID, NAME) SELECT ROW_NUMBER() OVER(ORDER BY NAME) [email protected], 'First';
INSERT INTO DEST (ID, NAME) SELECT ROW_NUMBER() OVER(ORDER BY NAME) [email protected], 'Second';
INSERT INTO DEST (ID, NAME) SELECT ROW_NUMBER() OVER(ORDER BY NAME) [email protected], 'Fourth';
END;
(simplified solution to demonstrate the purpose, it should be dynamic, not hardcoded)
.., но это, очевидно, не работает. Как это сделать?
Должен ли быть сгенерированный идентификатор уникальным? В вашем примере, если у вас было 46 строк, в последнем случае также был бы сгенерированный идентификатор 45 (противоречащий вашему элементу данных «45»). –
Да, они должны быть уникальными. Такая ситуация не будет, поскольку я проверяю, какие идентификаторы у меня уже есть в таблице DEST. Если у меня уже есть 45, мне не нужно вставлять его. Если мне не хватает этого идентификатора из таблицы SRC, его следует добавить в таблицу DEST. Таблица SRC - это таблица, содержащая записи, которые у меня нет в моей таблице DEST. – DNac
Вы хотите вставить числовые или целые значения? Что означает колонка 'id' в' DEST'? – ughai