日期:2014-05-17  浏览次数:20753 次

求帮助一个sql语句
两个表  订单表YSDD:序号XH,产品编号ZBXH_CPBH,单价DJ;
    产品盘盈表CPRK:标识序号ZBXH,产品编号ZBXH_CPBH,单价ZBXH_DJ
YSDD:
XH   ZBXH_CPBH  DJ
172   100M220   0.85
194   100M288   0.63
120   100M633   0.32
150   100M633   0.42
162   100M633   0.41
...................(若干上万行)

CPRK:
ZBXH      ZBXH_CPBH       ZBXH_DJ
15823      100M633         
15823      100M220        
15823      100M120
.....................(13行ZBXH都是一样15823)

现在的要求就是更新CPRK表里所有产品号的ZBXH_DJ,取值是从YSDD取得相应产品(比如100M633)的最新DJ(方法就是取得100M633在YSDD里XH最大的那一行的DJ) 也就是说一个产品在YSDD可能有很多行取XH最大那行单价赋值到CPRK表里,然后就是做个语句把CPRK表里的13行都填入相应的单价就行
小弟很少编程求指教谢谢!

------解决方案--------------------
查询语句
select a.DJ,d.DJ,* from CPRK a  
join 
(
select b.ZBXH_CPBH,b.DJ from YSDD b 
join
(select ZBXH_CPBH, max(XH) as XH YSDD group by ZBXH_CPBH) c
on b.ZBXH_CPBH=c.ZBXH_CPBH and b.XH=c.XH
) d
on a.ZBXH_CPBH=d.ZBXH_CPBH

修改语句
UPDATE A SET a.DJ=d.DJ  
join 
(
select b.ZBXH_CPBH,b.DJ from YSDD b 
join
(select ZBXH_CPBH, max(XH) as XH YSDD group by ZBXH_CPBH) c
on b.ZBXH_CPBH=c.ZBXH_CPBH and b.XH=c.XH
) d
on a.ZBXH_CPBH=d.ZBXH_CPBH