更新字段'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
我该怎么做呢?
我希望问题已经说清楚了
如果我理解正确的话: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版本中不包含重复项的条件