日期:2014-05-18 浏览次数:20478 次
select a.商品名,a.仓库,原始库存 = a.库存, 本月入库 = isnull(c.数量,0),本月出库 = isnull(b.数量,0),本期结存 = a.库存 - isnull(b.数量,0), + isnull(c.数量,0), from 商品表 a left join (select 商品名,数量 = sum(数量),仓库 from 销售表 group by 商品名,仓库) b on a.商品名 = b.商品名 and a.仓库 = b.仓库 left join (select 商品名,数量 = sum(数量),仓库 from 进货表 group by 商品名,仓库) c on a.商品名 = c.商品名 and a.仓库 = c.仓库 --1 这样的结果是对商品表的每一个产品都有了结余信息,报表格式你可以再加工 --2 设置作业在结余日生成报表到指定目录即可
------解决方案--------------------
select 商品名,编号,
SUM(case when 仓库='W1' then 原始库存 else 0 end) W1原始库存,
SUM(case when 仓库='W1' then 本月入库 else 0 end) W1本月入库,
SUM(case when 仓库='W1' then 本月出库 else 0 end) W1本月出库,
SUM(case when 仓库='W1' then 本期结存 else 0 end) W1结存,
SUM(CASE WHEN 仓库='W2' then 原始库存 else 0 end) W2原始库存,
SUM(CASE WHEN 仓库='W2' then 本月入库 else 0 end) W2本月入库,
SUM(CASE WHEN 仓库='W2' then 本月出库 else 0 end) W2本月出库,
SUM(CASE WHEN 仓库='W2' then 本期结存 else 0 end) W2结存,
SUM(case when 仓库='W1' then 原始库存 else 0 end)+SUM(CASE WHEN 仓库='W2' then 原始库存 else 0 end ) AS 原始总库存,
SUM(case when 仓库='W1' then 本期结存 else 0 end)+SUM(CASE WHEN 仓库='W2' then 本期结存 else 0 end)AS 总结存
from (
select a.商品名,a.编号,a.仓库,a.库存 as 原始库存,c.数量 as 本月入库,b.数量 as 本月出库,a.库存+c.数量-b.数量 as 本期结存
from #商品表 as a
inner join #销售表 as b
on b.品名=a.商品名
and b.仓库=a.仓库
inner join #进货表 as c
on c.品名=a.商品名
and c.仓库=a.仓库) as a
GROUP BY 商品名,编号