日期:2014-05-16  浏览次数:20873 次

关于sql的一个问题,急,在线等!!! 一定要帮我!
表结构:表history三个字段part,date,qty。表part_mst 也是三个字段:part,name,on_hand 
表part_mst的on_hand的字段是指现在(也就是今天的在库数量),表history的qty字段是指:进货多少或者出货多少,如果是进货就用正数的表示,如果是出货就用负数表示。表history的date字段是指是:进货或出货的日期。 
  画面是一个可以输入开始时间和结束时间的edit。比如我现在输入2008-02-11到2008-03-15; 
现在我向得到的是:2008-02-11以前的在库数量(on_hand 减去2008-02-11到今天的变化量),和2008-03-15那个时候的在库数量(on_hand 减去2008-02-15到今天的变化量)。还有在2008-02-11到2008-03-15时间段的增加量和减少量。 
请用sql文帮我表达出来,只能用一个表达式。谢谢!!!!!

这样对吗?
select history.part as part1,
history.on_hand, 
sum(iff(history.qty >= 0,history.qty,0)) as qty1, 
  sum(iff(history.qty < 0,-history.qty,0)) as qty2, 
  (select sum(qty) 
  from history 
  where history.part = part_mstpart
  and date between(2008/03/08,2008/03/25)) as total, 
  history.on_hand - total as on_hand1, 
  on_hand1 - 1 - 1 as last_on_hand 
from history left join part_mst on history.part = part_mst.part
where historyb.date between(2008/01/03,2008/03/08) 
group by a.part 
  history.name
  history.on_hand 
order by a.part
;

------解决方案--------------------


特此介绍一下结贴的方法

如果您问题已经得解决,请您及时结帖给分,以感谢帮助您的朋友。 

结帖方法:点击版面右上方或右下方 [管理] ,进入页面后就可以输入密码,分别给分,结帖。 
 或参考:
http://www.csdn.net/help/over.asp
http://topic.csdn.net/u/20080110/19/7cb462f1-cac6-4c28-848e-0a879f4fd642.html
=============================================================================
问题解决,请及时结贴。
 正确结贴方法:
 管理帖子-->给分-->输入密码-->结贴

== 思想重于技巧 ==