我现有表的数据如下
规格 入仓数量 出仓数量 结存 上次存 日期
1    364      0        464   100   2002-1-1
2    897      0        997   100   2002-1-1
1    0        300      764   464   2002-1-2
3    231      0        231   0     2002-1-3
规格相同的表示同一产品,我怎么才可以取得每一种产品最后那次记录数据呢,即查询结果如下:
规格 入仓数量 出仓数量 结存 上次存 日期
1    0        300      764   464   2002-1-2
2    897      0        997   100   2002-1-1
3    231      0        231   0     2002-1-3
请问这样的sql语句应该怎么写?我如果要统计每种规格的产品的上月库存余数、本月库存余数、本月入仓数量和本月出仓数量,用一句Sql语句又该如何写呢?谢谢各位了,分不够再加!
 

解决方案 »

  1.   

    取得每一种产品最后那次记录数据:
    select x.* from TableX x left join
    (select 规格, max(日期) as MaxDate from tableX group by 规格) t
    on t.MaxDate=x.日期 and t.规格=x.规格
      

  2.   

    楼上好象应该用inner joinselect x.* from TableX x inner join
    (select 规格, max(日期) as MaxDate from tableX group by 规格) t
    on t.MaxDate=x.日期 and t.规格=x.规格下面的问题用一条语句可能解决不了,写个存储过程吧
      

  3.   

    CloneCenter(复制中心) :你的办法我试了,不行呀,它还是会把我所有的记录读取出来的呀
      

  4.   

    TOMWLD(笑天) :你的办法不错,我试过了,还成,不过就是我的记录中的同一种规格的产品在同一天内会有几次的出入仓,单纯这样的语句就不能满足了,所以我改了一下,把它变成
    select x.* from TableX x inner join
    (select 规格, max(日期) as MaxDate,max(id) as id
     from tableX group by 规格) t
    on t.MaxDate=x.日期 and t.规格=x.规格 and t.id=x.id
    可是这样一来又有新的问题了,得出的结果少了一个产品,这是怎么回事呢?还请指教,谢谢!
      

  5.   

    你要上月库存余数、我想可以找本月最早日期的那笔帐的上次存,
    而本月库存余数、为本月最晚日期的那笔帐的本月库存余数,
    本月入仓数量和本月出仓数量,找出本月的本月入仓数量和本月出仓数量的总和我理解的对吗,如果对的话。
    我在给你写SQL
      

  6.   

    lengtouxiaoer(愣头小二):你好,我所需要的就是像你所说的,请帮帮忙,先谢谢了!