日期:2014-05-19  浏览次数:20616 次

sql问题
在一个运输系统中有两张表Trans(订单id,发往城市,单价,重量,日期),Price(发往城市,单价1,单价2),Trans记录了单条订单的具体信息,Price是价格表,比如发到某个城市重量小于10T时取单价1,重量大于10T时取单价2,然后在存储过程中根据重量及发往城市把单价写入到Trans中,现在的存储过程:update   Trans   set   单价=price.单价1   from   Trans,Price   where   Trans.重量 <10;
update   Trans   set   单价=price.单价2   from   Trans,Price   where   Trans.重量> 10;

现在出现一个新的情况就是有两个或者多个单同一天运到同一个城市,单个单的重量都小于10T,但是加起来的重量大于10T,如果照上面的做法会取到单价1,但实际情况需要取单价2,即同一天发往同一城市的重量和大于10需要取单价2,而不管单条单的重量,不知道存储过程该怎么写。急死了!

------解决方案--------------------
大概是这个意思:
where (select SUM(Trans.重量) from Trans a where a.发往城市=发往城市 and DateDiff(day,日期,getDate())=0) <10;