将字段“版本”更新为表格

时间:2016-10-09 10:15:38

标签: c# oracle

我遇到这种情况:

我有两张桌子:

  • 表A
  • Staging_Table A

两个表都包含这些常用列:

  • 描述

在表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

我该怎么做?

我希望问题很清楚

1 个答案:

答案 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版本中不包含重复项的条件。