ОБНОВЛЕНИЕ: я использую запрос из ответа ниже.При выполнении этого запроса он очищает поле SERVICE_DATE_OUT, если не находит соответствия с условиями where.Есть ли способ обойти это?
UPDATE PMEQMT P
SET SERVICE_DATE_OUT = (SELECT MAX(TL.TRANS_DATE)
FROM TRANSLOG TL
WHERE P.EQNO = TL.ITEMNO AND
TL.LOC_DESC = 'E-OUT OF SERVICE' AND
TL.TRANS_DATE >= SYSDATE - 1
)
WHERE P.CLASS = 'TL'
Что я пытаюсь сделать, это то, что, когда ITEMNO на таблице TRANSLOG находится в расположении E-OUT OF SERVICE / E-IN SERVICEи соответствует PMEQMT.EQNO, затем обновите SERVICE_DATE_OUT / IN для этого соответствующего PMEQMT.EQNO.
Запросы обновляют SERVICE_DATE_OUT / IN для всех записей в таблице PMEQMT.Может ли кто-нибудь помочь мне изменить мои запросы, чтобы обновить только соответствующий PMEQMT.EQNO до TRANSLOG.ITEMNO?
UPDATE PMEQMT
SET SERVICE_DATE_OUT = (SELECT B.TRANS_DATE
FROM TRANSLOG B, PMEQMT A
WHERE A.EQNO = B.ITEMNO AND
A.CLASS = 'TL' AND
B.LOC_DESC = 'E-OUT OF SERVICE' AND
B.TRANS_DATE >= SYSDATE - 1)
UPDATE PMEQMT
SET SERVICE_DATE_IN = (SELECT B.TRANS_DATE
FROM TRANSLOG B, PMEQMT A
WHERE A.EQNO = B.ITEMNO AND
A.CLASS = 'TL' AND
B.LOC_DESC = 'E-IN SERVICE' AND
B.TRANS_DATE >= SYSDATE - 1)