我遇到这种情况:
我有两张桌子:
两个表都包含这些常用列:
在表A中,我还有一列Version
,用于标识相应列Code
的最新版本。
我的问题是如何为同一Version
存储新的Description
后更新列Code
(我使用C#批量插入填充Staging_Table
我有一个每周更换一次的数据流。
我需要在表A中插入新行,其中包含相同的Code
,但是不同的Description
,而不删除旧行。
我使用MINUS操作将Staging表中的行插入到表A中,并且我在存储过程中使用了这种机制,因为我还使用C#中的Bulk Insert填充了临时表。
我需要获得的结果如下:
表A:
Id Code Description Version End_date
-- ----------------- ------- --------
1 8585 Red Car 1 26-mag-2015
2 8585 Red Car RRRR 2 01-giu-2015
我该怎么做?
我希望问题很清楚
答案 0 :(得分:0)
如果我理解正确的过程工作: 1.数据被加载到临时表Staging_table_A 2.数据从Staging_table_A itno Table_A插入,附加列版本。
我愿意:
with cnt as (select count(*) c, code from Table_A group by code)
Insert into Table_A (select sta.*, nvl(cnt.c,0) + 1 as version
from Staging_table_A sta left outer join cnt on (sta.code = cnt.code));
这是基于Table_A版本中不包含重复项的条件。