使用当前最新行

时间:2016-05-30 23:50:48

标签: sql sql-server sql-server-2008

除非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

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;