Oracle:如果前一行值与当前行值不同,则插入新行。否则,请更新

时间:2018-02-05 14:04:43

标签: sql oracle insert row

在PLSQL中,我有一个包含三列的表A:product,amount,date。

表A:

 Product-  Amount- Date

1S        100     1/1/2005
1S        100     1/2/2005
1S        100     1/7/2005
1S        120     1/10/2005

正如我们可以看到的那样,对于所有3个日期,金额100是相同的。并且,还插入了3条记录。但是如果当前行的数量与前一行相同,而不是3条记录,那么我们需要更新DATE,不应插入新记录。

如果当前行包含新金额120且与上一行不同,则应插入记录。请参阅以下预期的输出

输出:

 Product   -Amount         - Date

1S           100         1/7/2005   
1S           120         1/10/2005

1 个答案:

答案 0 :(得分:1)

您可以按照以下方式执行此操作。这将给出按产品和金额分组的最大日期。这将是一个简单的查询而不是合并

insert into tablea
(select product,amount,max(date) from tableb
group by product,amount).