表一: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 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?
(商品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