我想考虑字段值的每种组合,OID
并EXID
采用最小值LATEST_MODIFICATION_DATE
并更新FIRST_INSERTION_DATE
。
我有很多多余的行与字段值OID
和的组合EXID
。但是LATEST_MODIFICATION_DATE
为所有这些值设置最小日期应该不是问题。
我尝试了以下查询,但无法正常工作:
update O_TEST t
set FIRST_INSERTION_DATE = (select min (LATEST_MODIFICATION_DATE) from O_TEST)
where rowid < (
select max(rowid)
from OBS_ORDER_ID_MAPPING_TEST t2
where t.EXID = t2.EXID
and t.OID = t2.OID
);
您需要一个相关的子查询set
:
update O_TEST t
set FIRST_INSERTION_DATE = (select min(t2.LATEST_MODIFICATION_DATE)
from O_TEST t2
where t2.EXID = t.EXID and t2.OID = t.OID
)
where LATEST_MODIFICATION_DATE <> (select min(t2.LATEST_MODIFICATION_DATE)
from O_TEST t2
where (t2.EXID = t.EXID or t2.EXID is null and t.EXID is null) and
t2.OID = t.OID
);
要处理NULL
值,您需要在相关子查询中将其考虑在内:
update O_TEST t
set FIRST_INSERTION_DATE = (select min(t2.LATEST_MODIFICATION_DATE)
from O_TEST t2
where t2.EXID = t.EXID and
t2.OID = t.OID)其中LATEST_MODIFICATION_DATE <>(从O_TEST t2选择min(t2.LATEST_MODIFICATION_DATE)其中(t2.EXID = t.EXID或t2.EXID为null且t.EXID为null)和t2.OID = t.OID);
从您的评论来看OID
不是NULL
,但是如果是这样,您也可以使用类似的逻辑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句