SQL - 同桌和增量版本中复制数据(SQL - copy data within same ta

2019-10-17 14:45发布

我用MS SQLSSIS组合,其中我需要复制和粘贴对于给定的DocumentID(源和目标相同的表)的表的行,同时还增加所述“颠覆”列中。

例:

DocumentID=123 | Location=a | Version=2 |Subversion=4
DocumentID=123 | Location=b | Version=2 |Subversion=4
DocumentID=123 | Location=c | Version=2 |Subversion=4

复制后:

DocumentID=123 | Location=a | Version=2 |Subversion=5
DocumentID=123 | Location=b | Version=2 |Subversion=5
DocumentID=123 | Location=c | Version=2 |Subversion=5

SSIS中我已经增加(在本例中为4〜5)最大(颠覆)。 我需要的是一个选择/插入语句复制数据。

由于该表有大约150列我希望在不需列出所有列,但我找不到任何信息,如果该甚至有可能。

我试着插入与选择组合,但它总是在错误(合计问题)结束。

  Insert Into MyTable (AllMyColumns)
  select (AllmyColumns)
  from MyTable
  where DocumentID =123 AND ...

如何需要建立这种说法?

谢谢你的帮助。

Answer 1:

我认为以下解决方法会帮助你。

--Move incremental rows to the #temp table
Select * into #temp from MyTable where DocumentID=123 and ......

Declare @version varchar(20)

Select @version = Max(SubVersion) from #temp

--To increment the value
set @version='Subversion='+Cast(Substring(@version,charindex('=',@version)+1,len(@version)) as int)+1

--To update the value into temp
update #temp set SubVersion=@version

--Now insert into your table
insert into MyTable
Select * from #temp

--drop the temp table
drop table #temp

希望这可以帮助



Answer 2:

既然你说你需要insert into select让这个尝试的话,并添加条件,你的愿望..

INSERT INTO table1(docid, location, version, subversion)
SELECT  (docid, location, version, subversion)
FROM    table1
;

为了提供更好的答案,你可能需要至少显示你当前的查询和什么样的机制使得增量,表模式......我甚至可以假设你已经在这一步呢?



Answer 3:

如果您的源和目标列在萨姆斯顺序,然后就去做:

INSERT INTO MyTable
SELECT *
FROM MyTable
WHERE DocumentID =123 AND ...


文章来源: SQL - copy data within same table and increment version