我有表源SRC
如:如果数值,然后插入其他数字插入非数字
*Column1*
First
Second
45
Fouth
现在我想用这样的逻辑插入这些数据到表DEST (ID, NAME)
:
如果行数字,insert into (ID, NAME) VAUES (45, 'TBD')
。
如果行不是数字,生成ID和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)
..,但这显然是行不通的。怎么做?你可以采取
生成的ID是否必须是唯一的?在你的例子中,如果你有46行,那么最后一个也会有一个45的生成ID(与你的示例数据项'45'冲突)。 –
是的,他们需要是唯一的。这种情况不会发生,因为我正在检查DEST表中已有的ID。如果我已经有45个,我不需要插入它。如果我缺少来自SRC表的此ID,则应将其添加到DEST表中。 SRC表格现在是包含我在DEST表格中没有的记录的表格。 – DNac
你想插入数字或整数值吗? 'DEST'中的'id'列支持什么? – ughai