表一:T1商品ID       期初数量             发生额        期末数量     变动时间1              10                   10            20         2009-06-01 
1              20                   -2            18         2009-06-02
1              18                   -2            16         2009-06-03
2              16                    4            20         2009-06-01 
2              20                   -2            18         2009-06-02
2              18                   -6            12         2009-06-03表二:T2商品ID       期初数量            本期存入       本期发出        期末数量
1              10                  10              4               16
2              16                   4              8               12表一中发生额为正表示入库,为负表示出库表二 为表一的库存账 现求 表二 高效  SQL期初数量 描述 为"SELECT TOP 1 期初数量 FROM T1 ORDER BY 变动时间 ASC"
期末数量 描述 为"SELECT TOP 1 期末数量 FROM T1 ORDER BY 变动时间 DESC"
本期存入 为 表一的 所有 发生额 的正数和
本期发出 为 表一的 所有 发生额 的负数和的绝对值按商品ID GROUP现求 表二 高效  SQL?

解决方案 »

  1.   

    create table Su_hibl
    (商品ID  int,     期初数量  int,            发生额  int,        期末数量    int,  变动时间 datetime)
    insert into Su_hibl
    select 1  ,            10     ,             10   ,         20   ,    '2009-06-01'union all    
    select 1  ,            20     ,             -2   ,         18   ,    '2009-06-02'union all    
    select 1  ,            18     ,             -2   ,         16   ,    '2009-06-03'union all    
    select 2  ,            16     ,               4  ,          20  ,    '2009-06-01'union all    
    select 2  ,            20     ,             -2   ,         18   ,    '2009-06-02'union all    
    select 2  ,            18     ,             -6   ,         12   ,    '2009-06-03'   select distinct 商品ID,
    期初数量=(select top 1 期初数量  from Su_hibl where 商品ID =A.商品ID order by 变动时间 ASc ) ,
    本期存入 =(select abs(sum(发生额)) from Su_hibl where 商品ID =A.商品ID and 发生额 > 0),
    本期发出 =(select abs(sum(发生额)) from Su_hibl where 商品ID =A.商品ID and 发生额 < 0),
    期末数量=(select top 1 期末数量  from Su_hibl where 商品ID =A.商品ID order by 变动时间 DESC ) 
    from Su_hibl A
    ==================商品ID      期初数量            本期存入      本期发出        期末数量 
    1              10                  10              4              16 
    2              16                  4              8              12 
      

  2.   

    大哥 好厉害,我想 再 扩展 一下  如果 我在 T1 表 中 加 一个 字段 "商品名称" 这是如何写SQL 或者 再加 上一个 "单位" 呢SQL 类推吗 可否 JOIN