我是这么写的:
UPDATE TABLE1 T1 SET T1.COL11=
SUBSTR(
(SELECT TO_CHAR(T2.ENDTIME,'YYYYMMDD') FROM TABLE2 T2 WHERE T1.MAPCODE = T2.PROJECTID AND T2.MAPSHEETFLAG IS NULL),0,6)
WHERE EXISTS
(SELECT TO_CHAR(T2.ENDTIME,'YYYYMMDD') FROM TABLE2 T2 WHERE T1.MAPCODE = T2.PROJECTID AND T2.MAPSHEETFLAG IS NULL);
这里,表TABLE1即T1是图幅元数据表,表TABLE2即T2是范围线工程表。现在需要将T2的EndTime(包括年月日时分秒在内的完整的时间类型)格式化为YYYYMMDD形式,并取前6位,即年月(如201705),赋值给T1的COL1字段。赋值的条件是T1的MAPCODE与T2的PROJECTID相等,且T2的MAPSHEETFLAG标记值不为空,且查询结果存在。