更新字段'version'变成一张桌子

本文关键字:一张 字段 version 更新 | 更新日期: 2023-09-27 18:12:17

我有这样的情况:

我有两个表:

  • 表A
  • Staging_Table A

两个表都包含相同的列:

在表A中,我还有一个列Version,它标识了相应列Code的最新版本。

我的问题是如何更新列Version一旦新的Description被存储为相同的Code(我用c#的批量插入填充Staging_Table)。我有一个数据流,每周改变一次)。

我需要将新行插入表A,其中包含相同的Code,但不同的Description,而不删除旧的。

我用减号操作从Staging表插入到表A,我在存储过程中有这种机制,因为我也用c#的批量插入填充了Staging表。

我需要得到的结果如下:

TABLE A:

Id  Code Description   Version  End_date
--  -----------------  -------  --------
 1  8585 Red Car             1  26-mag-2015
 2  8585 Red Car RRRR        2  01-giu-2015

我该怎么做呢?

我希望问题已经说清楚了

更新字段'version'变成一张桌子

如果我理解正确的话:1. 数据被加载到staging表Staging_table_A中2. 数据从Staging_table_A插入到带有附加列版本的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版本中不包含重复项的条件