我用MS SQL与SSIS组合,其中我需要复制和粘贴对于给定的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 ...
如何需要建立这种说法?
谢谢你的帮助。
我认为以下解决方法会帮助你。
--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
希望这可以帮助
既然你说你需要insert into select
让这个尝试的话,并添加条件,你的愿望..
INSERT INTO table1(docid, location, version, subversion)
SELECT (docid, location, version, subversion)
FROM table1
;
为了提供更好的答案,你可能需要至少显示你当前的查询和什么样的机制使得增量,表模式......我甚至可以假设你已经在这一步呢?
如果您的源和目标列在萨姆斯顺序,然后就去做:
INSERT INTO MyTable
SELECT *
FROM MyTable
WHERE DocumentID =123 AND ...