明细表结构:
品名  所属仓库   发货日期   发货数量   发货单价
要求根据明细表生成如下汇总表(按品名和所属仓库分类汇总:)
我自己写了一个( group by 品名,所属仓库  with   rollup)品名  所属仓库  本月销量  本月价格   本月应收款   累计销量  累计价格   累计应收款   
商品A  库1       2           5          10            42       6         252
商品A  库2        3          4           12           12        5         60
小计              5                      22            54                 312
....................
合计
注:
本月销量:本月 “发货数量”求和
本月应收款:本月 “发货数量”*“发货单价”求和
本月价格:本月应收款/本月销量累计销量:所有 “发货数量”求和
累计应收款:所有 “发货数量”*“发货单价”求和
累计价格:"累计应收款"/"累计销量"

解决方案 »

  1.   

    最好给出完整的表结构,测试数据,计算方法和正确结果.发帖注意事项
    http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281
      

  2.   

    select 
    case when grouping(品名)=1 then '小计' else 品名 end  品名,
    所属仓库,
    本月销量=sum(发货数量),
    本月价格= sum(发货数量*发货单价) *1.0 / sum(发货数量),
    本月应收款 =  sum(发货数量*发货单价),
    累计销量= (select sum(发货数量) from 明细表 where 品名=a.品名 and 所属仓库=a.所属仓库 and convert(varchar(7),发货日期,120)<=convert(varchar(7),a.发货日期,120) ),
    累计价格= (select sum(发货数量*发货单价) *1.0 / sum(发货数量) from 明细表 where 品名=a.品名 and 所属仓库=a.所属仓库 and convert(varchar(7),发货日期,120)<=convert(varchar(7),a.发货日期,120) ),
    累计应收款 =(select sum(发货数量*发货单价) from 明细表 where 品名=a.品名 and 所属仓库=a.所属仓库 and convert(varchar(7),发货日期,120)<=convert(varchar(7),a.发货日期,120) )
    from 明细表 a
    group by 品名,所属仓库,convert(varchar(7),发货日期,120) with rollup
      

  3.   

    xys_777,试了你的SQL,出现一条重复记录