Sql 如何从';分期付款';符合标准的每一行的表?

Sql 如何从';分期付款';符合标准的每一行的表?,sql,oracle,Sql,Oracle,假设我有一个表(表1),其中包含以下数据 VALUE_ID VALUE CODE HOUR TYPE 1 null DEF 1 REG 2 null DEF 2 REG 3 null DEF 3 REG 假设我有一个物化视图(MV1)(连接两个不同的表),如下所示: VALUE_ID VAL

假设我有一个表(表1),其中包含以下数据

VALUE_ID    VALUE      CODE    HOUR     TYPE
   1        null        DEF     1        REG
   2        null        DEF     2        REG
   3        null        DEF     3        REG
假设我有一个物化视图(MV1)(连接两个不同的表),如下所示:

 VALUE_ID    VALUE      CODE    HOUR     TYPE     CALC_VALUE    DEFAULT_VALUE
    1        null       DEF      1        REG         8               2
    2        null       DEF      2        REG         12              1
    3        null       DEF      3        REG         25              0
我想编写一个脚本,更新表1,并将值设置为计算值列中的值或MV1中的默认值列中的值。以下是我的尝试:

 Update Table1
    SET value = (select calc_value from MV1)
  WHERE TYPE = 'REG' 
    AND HOUR = 2;
  COMMIT;

任何帮助都将不胜感激。提前谢谢

我认为您只需要一个相关子查询:

UPDATE Table1
    SET value = (select calc_value from MV1 where table1.value_id = mv1.value_id)
    WHERE TYPE = 'REG' AND HOUR = 2;
  COMMIT;

将该值设置为CALC_VALUE列中的值或基于什么的默认值?@forpas-假设我在VALUE中有一个类型为“REG”的条目。我想用MV1物化视图中CALC_value列中的值替换Table1表中满足该条件的所有值。(因此任何类型为'REG'的值);什么时候更新将使用列
DEFAULT\u VALUE
?哦,很抱歉,我没有提供,因为我想如果我可以得到更新第一个场景的方法,第二个场景将是一个cakewalk,因为我可以将相同的概念应用于它。条件是如果代码'DEF'和值为null谢谢,这就是我要找的!我的问题是不是很糟糕?不知道为什么我会收到负面回应/评分。。。