sql - 如何读取一个表并在另一个表中插入不同的值
问题描述
之前,我在 sql 编程方面还很陌生。我正在尝试编写一个从表中读取行并将这些值(和另一个默认值)插入另一个表中的脚本。
就我而言,这是我最好的拍摄...... :(
declare @pk_tercero_contacto int, @tercero_id int, @login nvarchar(200), @defecto bit,
@descripcion nvarchar(200), @notificaciones bit, @tercero_usuario1 cursor
select @pk_tercero_contacto = max(t.tercero_id) from TD_TERCERO_CONTACTO t
set @pk_tercero_contacto = (@pk_tercero_contacto + 1)
declare tercero_usuario cursor FOR select t.LOGIN, t.TERCERO_ID, t.DEFECTO,
t.DESCRIPCION, t.NOTIFICACIONES from TD_TERCERO_USUARIO t
OPEN @tercero_usuario
FETCH NEXT FROM tercero_usuario
WHILE @@FETCH_STATUS = 0
BEGIN
select @tercero_id = t.tercero_id, @login = t.login, @defecto = t.defecto,
@descripcion = t.descripcion, @notificaciones = t.notificaciones from
@tercero_usuario t FETCH NEXT FROM tercero_usuario into @tercero_usuario1
insert into TD_TERCERO_CONTACTO values(@pk_tercero_contacto, @login, null, null,
@descripcion, @notificaciones, @tercero_id, null, null, null, @defecto)
set @pk_tercero_contacto = @pk_tercero_contacto + 1
END
CLOSE tercero_usuario;
DEALLOCATE tercero_usuario;
GO
这个想法是恢复第一个表(5列)中的所有文件,然后恢复每行的五列,并将这些值加上默认值插入到第二个表中......
我不能让它工作
谢谢小伙伴。
解决方案
以下是根据选择条件将选定行从表 1 插入表 2 的示例格式。
我已编辑查询以满足您为表 2 手动生成主键的要求
Declare @pk_StartIndex int
Set @pk_StartIndex = 79 --This is initial index that you will have to set
manually, for each row returned in select query below the index value will
be incremented by one
INSERT INTO table2 (PrimaryKey, column1, column2, column3)
SELECT @pk_StartIndex + Row_Number() Over(Order By (Select 100))
column1, column2, column3
FROM table1
WHERE condition
Row_Number 将帮助您从提供的起始索引开始生成数字。
in 子句 (Select 100) 确保 number 足够高于您希望 select 查询返回的行数
DECLARE @pk_tercero_contacto int
SELECT @pk_tercero_contacto = max(tercero_id) FROM TD_TERCERO_CONTACTO
INSERT INTO TD_TERCERO_CONTACTO (tercero_id, login, <your column name>,
<your column name>, description, notificaciones, <your column name>, <your
column name>, <your column name>, <your column name>, defecto)
SELECT @pk_tercero_contacto + Row_Number() Over(Order By (Select 100)),
t.login, null, null, t.description, t.notificaciones, t.tercero_id, null,
null, null, t.defecto
FROM TD_TERCERO_USUARIO as t
推荐阅读
- java - 如何允许 java 有权读取和写入 macOS 上的文件?
- javascript - JavaScript 回调函数(引用)接受没有构造函数的参数
- ruby - 如何使用.gsubs在ruby中用哈希替换字符串?
- angular - 角度图在返回 observable 之前不循环
- scala - 火花截断火花计划
- c - “结果应该是平局”是什么意思?如何将整数转换为浮点数?结果应该是平局?
- python - 使用python的逻辑磁盘大小
- assembly - 如果至少 10 个字符如何输出
- vuejs2 - 为什么使用 new Vue.extend() 创建的子级不会在父级中呈现
- excel - Excel-vba Application.Run 替代方法以使用命名参数运行宏