不管如何,我是很喜歡LZ這樣,把測試語句都寫好的提問方式 declare @b datetime ,@e datetime set @b='2008-1-1' set @e='2008-2-8'select 品名,仓库, 期初数量=isnull((select top 1 结存数量 from test where 日期< @b and 品名=A.品名 and 仓库=A.仓库 order by 日期 desc ),0), 本期入库= sum(入库数量), 本期出库= sum(出库数量), 期末结存=isnull((select top 1 结存数量 from test where 日期<= @e and 品名=A.品名 and 仓库=A.仓库 order by 日期 desc ),0) from test as A where 日期 between @b and @e group by 品名,仓库
declare @b datetime ,@e datetime set @b='2008-1-1' set @e='2008-2-8'select 品名,仓库, 期初数量=isnull((select top 1 期初数量 from test where 日期>= @b and 品名=A.品名 and 仓库=A.仓库 order by 日期 ),0), 本期入库= sum(入库数量), 本期出库= sum(出库数量), 期末结存=isnull((select top 1 结存数量 from test where 日期<= @e and 品名=A.品名 and 仓库=A.仓库 order by 日期 desc ),0) from test as A where 日期 between @b and @e group by 品名,仓库
declare @b datetime ,@e datetime
set @b='2008-1-1'
set @e='2008-2-8'select 品名,仓库,
期初数量=isnull((select top 1 结存数量 from test where 日期< @b and 品名=A.品名 and 仓库=A.仓库 order by 日期 desc ),0),
本期入库= sum(入库数量),
本期出库= sum(出库数量),
期末结存=isnull((select top 1 结存数量 from test where 日期<= @e and 品名=A.品名 and 仓库=A.仓库 order by 日期 desc ),0)
from test as A
where 日期 between @b and @e
group by 品名,仓库
declare @b datetime ,@e datetime
set @b='2008-1-1'
set @e='2008-2-8'select 品名,仓库,
期初数量=isnull((select top 1 期初数量 from test where 日期>= @b and 品名=A.品名 and 仓库=A.仓库 order by 日期 ),0),
本期入库= sum(入库数量),
本期出库= sum(出库数量),
期末结存=isnull((select top 1 结存数量 from test where 日期<= @e and 品名=A.品名 and 仓库=A.仓库 order by 日期 desc ),0)
from test as A
where 日期 between @b and @e
group by 品名,仓库