除非PRICE中有多行,否则我有这个查询可以做我需要的...基本上,我需要查看PRICE.DATE_START并确定哪个具有最新的开始日期并在我的更新子句中使用该日期。我已经尝试了几种CTE等变体而没有成功。任何反馈都表示赞赏。
UPDATE ST_EXTRA
SET ST_EXTRA.colEMAILDATE = PRICE.DATE_START, ST_EXTRA.colEMAILPRICE = PRICE.PRICE
FROM ST_EXTRA
INNER JOIN PRICE ON ST_EXTRA.NUMBER = PRICE.NUMBER
WHERE colEMAIL = 1
答案 0 :(得分:0)
而不是inner join
,请使用cross apply
:
UPDATE e
SET colEMAILDATE = p.DATE_START,
colEMAILPRICE = p.PRICE
FROM ST_EXTRA e CROSS APPLY
(SELECT TOP 1 p.*
FROM PRICE p
WHERE e.NUMBER = p.NUMBER
ORDER BY DATE_START DESC
) p
WHERE colEMAIL = 1;