0
我想创建一个SQL语句,以基于select语句的结果插入多行到表中。使用声明和选择结果插入多行到表中
这样做的目的是我们有2个表格应该包含与相同数据相关的数据行。我创建了一个语句来标识一个表中不在另一个表中的所有行,并在第二个语句中将这些行插入到第二个表中。
这两项工作分别,我遇到的问题是,当我尝试结合他们希望能在一个运行所有的插入去它成功,但只在搜索结果的第一行
IF OBJECT_ID('tempdb..#retentiontemp') IS NOT NULL
/* Then it exists */
DROP TABLE #retentiontemp
Select *
Into #retentiontemp
From
(SELECT VCHRNMBR,dex_row_id
FROM JCRFP100
WHERE VCHRNMBR NOT IN (SELECT VCHRNMBR FROM JC10500)
) As VCHRNMBR
declare @VENDORID char(15),@VCHRNMBR char(20), @DOCTYPE smallint, @BACHNUMB char(15), @ACTINDX int, @TAXDTLID char(15), @TAXAMNT numeric(19,5), @ORTAXAMT numeric(19,5), @PCTAXAMT numeric(19,5), @ORPURTAX numeric(19,5), @TDTTXPUR numeric(19,5), @ORTXBPUR int, @TXDTTPUR numeric(19,5), @ORTOTPUR numeric(19,5), @POSTED tinyint;
select
@VENDORID = VENDORID,
@VCHRNMBR = VCHNUMWK,
@DOCTYPE = DOCTYPE,
@BACHNUMB = BACHNUMB,
@TAXDTLID = Taxschid,
@TAXAMNT = TAXAMNT,
@TDTTXPUR = CURTRXAM,
@ORTXBPUR = CURTRXAM,
@TXDTTPUR = CURTRXAM,
@ORTOTPUR = CURTRXAM,
@ORTAXAMT = @TAXAMNT,
@PCTAXAMT = @TAXAMNT,
@ORPURTAX = @TAXAMNT,
@POSTED = POSTED
from jcrfp100 where dex_row_id in (select dex_row_id from #retentiontemp)
If @TAXAMNT Is Null
set @ACTINDX = '27'
Else
set @ACTINDX = '28'
INSERT INTO PM10500 (VENDORID, VCHRNMBR, DOCTYPE, BACHNUMB, TAXDTLID, BKOUTTAX, TAXAMNT, ORTAXAMT, PCTAXAMT, ORPURTAX, FRTTXAMT, ORFRTTAX, MSCTXAMT, ORMSCTAX, ACTINDX, TRXSORCE, TDTTXPUR, ORTXBPUR, TXDTTPUR, ORTOTPUR, CURRNIDX, POSTED) VALUES (@VENDORID, @VCHRNMBR, @DOCTYPE, @BACHNUMB, @TAXDTLID, '0', @TAXAMNT, @ORTAXAMT, @PCTAXAMT, @ORPURTAX, '0', '0', '0', '0', @ACTINDX, '0', @TDTTXPUR, @ORTXBPUR, @TXDTTPUR, @ORTOTPUR, '0', @POSTED)
INSERT INTO JC10500 (VENDORID, VCHRNMBR, DOCTYPE, BACHNUMB, TAXDTLID, BKOUTTAX, TAXAMNT, ORTAXAMT, PCTAXAMT, ORPURTAX, FRTTXAMT, ORFRTTAX, MSCTXAMT, ORMSCTAX, ACTINDX, TRXSORCE, TDTTXPUR, ORTXBPUR, TXDTTPUR, ORTOTPUR, CURRNIDX, POSTED) VALUES (@VENDORID, @VCHRNMBR, @DOCTYPE, @BACHNUMB, @TAXDTLID, '0', @TAXAMNT, @ORTAXAMT, @PCTAXAMT, @ORPURTAX, '0', '0', '0', '0', @ACTINDX, '0', @TDTTXPUR, @ORTXBPUR, @TXDTTPUR, @ORTOTPUR, '0', @POSTED)
select * from PM10500 where VCHRNMBR in (select VCHRNMBR from #retentiontemp)
select * from JC10500 where VCHRNMBR in (select VCHRNMBR from #retentiontemp)
[SQL服务器,请选择到现有的表]的可能的复制(http://stackoverflow.com/questions/4101739/sql-server-select-into-existing-table) –