【发布时间】:2017-05-22 20:46:32
【问题描述】:
希望有人能提供帮助。我正在尝试做一个更新声明。我有一个包含以下列的表:BUS_NBR_SK, BUS_NBR, EFF_DT, ENT_TMPSTP, EXP_DT。
主键是BUS_NBR_SK 和BUS_NBR。这里只有一张桌子。
这些是插入到表中的,我需要更新旧记录上的 EXP_DT,并使用 max(ENT_TMSTP) 保留最近的记录,我打算只使用 SET b.EXP_DT = current_timestamp 进行更新,其中 @ 987654328@ 但是这不起作用,因为最近的记录也将被分配一个过期日期。
任何想法如何工作?
我尝试了以下方法,但它正在使用最大生效日期更新所有内容。
UPDATE TABLE b
SET b.EXP_DT = (SELECT MAX(a.EFF_DT)
FROM TABLE A
INNER JOIN TABLE B
ON A.BUS_NBR_SK = B.BUS_NBR_SK
AND A.ENT_TMSTP = B.ENT_TMSTP
AND A.BUS_NBR = B.BUS_NBR)
WHERE EXP_DT IS NULL
and ENT_TMSTP != (select max(c.ENT_TMSTP)
from table C)
非常感谢!
【问题讨论】:
-
编辑您的问题并使用您正在使用的数据库对其进行标记。