4个表,表名和字段如下:goods:商品资料表
字段:  id, name  (编号,商品名)sale:  销售表
字段: id,   p_id,  sale_date (编号,仓库ID,销售日期)sale_detail :销售明细表
字段: id,   s_id,  g_id, price, qty,total,comment (编号,sale表的ID,goods表的ID,销售价格,销售数量,金额,备注)stock:  仓库资料
字段:id,  name  (编号,名称)现在要查询仓库名称为“城北仓库”,销售日期为“2004-4-1”到 “2004-4-30”的销售情况,按某一商品编号的总销售数量降序排列,要求显示格式如下:商品编号  商品名  销售数量  平均销售价格  销售金额   备注其中销售数量为同一商品编号的总销售数量
平均销售价格为所有销售价格之和的平均值
销售金额为同一商品编号的总金额(销售数量 x 平均销售价格)
请各位大侠不吝赐教(在线等)

解决方案 »

  1.   

    select a.g_id,b.name, sum(qty) as SumQty,sum(price)/count(a.g_id) as averagePrice, sum(price) as SumPrice , a.comment  from  sale_detail a    left outer join 
                                                goods b   on a.g_id=b.id left outer join
                                                sale   c on  a.s_id=c.id left oute join 
                                                stock d on c.p_id =d.id
                                  where  d.name='城北仓库'  and c.sale_date between '2004-4-1' and '2004-4-30'
                                  group by a.g_id,a.comment\\你試試看,我沒有測試,有問題請告知,再行商討
      

  2.   

    select A.[id],goods.[name],qty_sum,price_avg,qty_sum*price_avg,comment from (
    select goods.[id],sum(qty) as qty_sum,avg(price) as price_avg
    from sale 
    left join stock on sale.p_id=stock.[id]
    left join sale_detail on sale.[id]=sale_detail.s_id
    left join goods on goods.[id]=sale_detail.g_id
    where datediff(d,sale_date,'2004-4-1')<=0 and datediff(d,sale_date,'2004-4-30')>=0
    and stock.[name]=N'城北倉庫'
    group by goods.[id]
    ) A
    left join goods on goods.[id]=A.[id]
    left join sale_detail on g_id=A.[id]
    order by qty_sum desc
      

  3.   

    to: leolan(史留香) 
    我按你的SQL语句,为什么还有错呢?请大侠再指教
      

  4.   

    select 商品编号,商品名,SUM(销售数量),AVG(销售价格),SUM(金额),备注 FROM (select D.id as 商品编号,d.name as 商品名,C.price as 销售价格,C.qty as 销售数量,C.total as 金额 ,C.comment as 备注  from sale A left outer join stock B on A.p_id=B.id LEFT OUTER JOIN sale_detail C ON A.id=C.s_id RIGHT OUTER JOIN goods D ON C.g_id=D.id WHERE B.name='城北仓库' and a.sale_date between '2004-4-1' and '2004-4-30') A GROUP BY  商品编号,商品名,备注
    这样应该可以搞定你的问题
      

  5.   

    seletc a.id as '商品编号',max(a.name) as '商品名称',sum(b.qty) as '销售数量',sum(b.qty*b.price)/sum(b.qty) as '平均价格',sum(b.qty*b.price) as '销售金额',
    max(b.comment) as '备注' from goods a,sale_detail b,sale c,stock d
    where a.id = b.g_id and b.s_id = c.id and d.id = c.p_id and d.name ='城北仓库'
    and c.sale_date between '2004-4-1' and '2004-4-30' group by a.id desc
      

  6.   

    select g.id 商品編號, g.name 商品名稱, sum(sd.qty) qty, avg(sd.price) price,qty*price 總金額, sd.comment
    from sale s
    left join sale_detail sd on s.id = sd.s_id
    left join stock on s.p_id = stock.id
    left join goods g on sd.g_id = g.id
    where stock.name = '城北倉庫'
    未測試
      

  7.   

    上面的,再在後面加分組 
    group by g.id, g.name, price, qty*price, sd.comment
      

  8.   

    忘了排序
    再加sort by qty desc