OK
T1 表
PRODUCTCODE 产品代码
PRICEDATE   产品报价时间
PRICE       产品报价
PRE_PRICE   产品的上次报价
T2 表
PRODUCTCODE 产品代码
PRICEDATE   产品报价时间
PRICE       产品报价需求是从T2表中获取产品的最后一次报价更新到T1表的PRE_PRICE
SQL语句如下:
UPDATE T1 SET PRE_PRICE=
(SELECT PRICE FROM T2 WHERE T1.PRODUCTCODE=T2.PRODUCTCODE AND rownum<2 
ORDER BY T2.PRICEDATE DESC)
执行时出错:缺少右括号
若语句中取消ORDER BY 则语法通过,但这不是我要的结果。

解决方案 »

  1.   

    update T1 set PRE_PRICE=(select tt.PRE_PRICE from(select PRE_PRICE,RODUCTCODE from T2 where rownum<2 order by T2.PRE_PRICE desc) tt where tt.PRE_PRICE=T2.PRE_PRICE)
      

  2.   

    update T1 set PRE_PRICE=(select tt.PRICE from(select PRICE,PRODUCTCODE from T2 where rownum<2 order by T2.PRICEDATE desc) tt where tt.PRODUCTCODE=T1.PRODUCTCODE)
      

  3.   

    UPDATE T1 x SET PRE_PRICE=
    (SELECT PRICE FROM T2 y WHERE y.PRODUCTCODE=x.PRODUCTCODE and y.PRICEDATE=(select max(PRICEDATE )from T2 z where z.PRODUCTCODE=y.PRODUCTCODE));