按 1 列中的特定旧值和新值更新列
update column by specific old and new value in 1 column
这是一个日志 table 所有卡片更改的值都保存在此 table 现在我添加列以插入卡片的旧值问题是我想在代码中做的是过程扫描 table,但新列中的旧值。什么是旧值旧值是相同的值一张卡不重复然后它没有旧值但是如果它重复所以有一个旧值我上传的图像确定我想做什么谢谢你的帮助:)
这应该为您指明正确的方向,以了解如何跟踪先前的值(我假设一个名为 TS 的时间戳字段跟踪给定 card_code 的实例顺序。您将需要调整以满足您的数据模型)。您只需要围绕它进行更新,为给定的 card_Code 和 TS.
设置 total_number_o
with tab as (
select 101012172583 card_code, '005' total_number, sysdate ts from dual
union all select 101012172583 card_code, '006' total_number, sysdate-1/12 ts from dual
union all select 101012172583 card_code, '003' total_number, sysdate-2/12 ts from dual
union all select 101012172583 card_code, '003' total_number, sysdate-3/12 ts from dual
union all select 101012172583 card_code, '005' total_number, sysdate-4/12 ts from dual
union all select 101012172583 card_code, '004' total_number, sysdate-5/12 ts from dual
)
select card_Code
, total_number
, lag(total_number) over ( partition by card_code order by ts) total_number_o
, ts
from tab order by card_Code, ts desc;
CARD_CODE TOTAL_NUMBER TOTAL_NUMBER_O TS
101012172583 "005" "006" 01/12/2015 3:16:35 PM
101012172583 "006" "003" 01/12/2015 1:16:35 PM
101012172583 "003" "003" 01/12/2015 11:16:35 AM
101012172583 "003" "005" 01/12/2015 9:16:35 AM
101012172583 "005" "004" 01/12/2015 7:16:35 AM
101012172583 "004" 01/12/2015 5:16:35 AM
这是一个日志 table 所有卡片更改的值都保存在此 table 现在我添加列以插入卡片的旧值问题是我想在代码中做的是过程扫描 table,但新列中的旧值。什么是旧值旧值是相同的值一张卡不重复然后它没有旧值但是如果它重复所以有一个旧值我上传的图像确定我想做什么谢谢你的帮助:)
这应该为您指明正确的方向,以了解如何跟踪先前的值(我假设一个名为 TS 的时间戳字段跟踪给定 card_code 的实例顺序。您将需要调整以满足您的数据模型)。您只需要围绕它进行更新,为给定的 card_Code 和 TS.
设置 total_number_owith tab as (
select 101012172583 card_code, '005' total_number, sysdate ts from dual
union all select 101012172583 card_code, '006' total_number, sysdate-1/12 ts from dual
union all select 101012172583 card_code, '003' total_number, sysdate-2/12 ts from dual
union all select 101012172583 card_code, '003' total_number, sysdate-3/12 ts from dual
union all select 101012172583 card_code, '005' total_number, sysdate-4/12 ts from dual
union all select 101012172583 card_code, '004' total_number, sysdate-5/12 ts from dual
)
select card_Code
, total_number
, lag(total_number) over ( partition by card_code order by ts) total_number_o
, ts
from tab order by card_Code, ts desc;
CARD_CODE TOTAL_NUMBER TOTAL_NUMBER_O TS
101012172583 "005" "006" 01/12/2015 3:16:35 PM
101012172583 "006" "003" 01/12/2015 1:16:35 PM
101012172583 "003" "003" 01/12/2015 11:16:35 AM
101012172583 "003" "005" 01/12/2015 9:16:35 AM
101012172583 "005" "004" 01/12/2015 7:16:35 AM
101012172583 "004" 01/12/2015 5:16:35 AM