紧急求助一个棘手的SQL语句问题

anthonyliu 2004-10-30 01:22:11
UPDATE DEZ_XXK_IMPORT_PRICE T1 SET T1.PREPRICE=(
SELECT T2.PRICE
FROM DEZ_XXK_PUBLISH_PRICE T2
WHERE T1.BASECODE||T1.ALIASCODE||T1.SUPPLIERCODE=T2.BASECODE||T2.ALIASCODE||T2.SUPPLIERCODE AND rownum<2
ORDER BY T2.PRICEDATE DESC)
WHERE T1.FILEID=1;
在执行时会告诉我缺少右括号
反复检查都没有缺少啊。
我试着把 ORDER BY T2.PRICEDATE DESC 语句删掉,可以正常运行,但这是我获取最后报价所必需的条件,请各路英雄帮忙解决一下,谢谢!

...全文
97 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wylwyl1130 2004-10-30
  • 打赏
  • 举报
回复
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));
liuyi8903 2004-10-30
  • 打赏
  • 举报
回复
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)
liuyi8903 2004-10-30
  • 打赏
  • 举报
回复
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)
anthonyliu 2004-10-30
  • 打赏
  • 举报
回复
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 则语法通过,但这不是我要的结果。
ATGC 2004-10-30
  • 打赏
  • 举报
回复
最好把需求写一下,最好请贴出建表语句,
这样一句话,别人未必能看看懂,还要自己动手建表调试,效率就低了
anthonyliu 2004-10-30
  • 打赏
  • 举报
回复
楼上的方法也不可行
luxuezhu 2004-10-30
  • 打赏
  • 举报
回复
去掉rownum<2
anthonyliu 2004-10-30
  • 打赏
  • 举报
回复
楼上的我要的是最后报价,不是最高报价,且这条语句也是同不过的。
luxuezhu 2004-10-30
  • 打赏
  • 举报
回复
ORDER BY T2.PRICE DESC

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧