商品销售表如下:日期      商品编码    销售数量  销售价格  批次成本
20091001  033001       210       11.9      10.2
20091001  033002       520       12        10
20091002  033001       420       10        10.2
20091002  033002       600       12        10

现要用一条SQL语句查出每种商品低于成本价的销售数量以及亏本销售的数量占总销售数量的比例,格式如下:
商品编码  该商品负毛利销售数量  该商品总销售数量 负毛利销量占比(%)
033001          1000                 10000           10%
请高手帮忙,谢谢啦!

解决方案 »

  1.   

    SELECT 
    商品编码 ,
    SUM(CASE WHEN 销售价格<批次成本 THEN 销售数量 ELSE 0 END )AS 该商品负毛利销售数量,
    SUM(销售数量)AS 该商品总销售数量,
    LTRIM(CONVERT(DEC(18,2),SUM(CASE WHEN 销售价格<批次成本 THEN 销售数量 ELSE 0 END )*100.0/SUM(销售数量)))AS 百分比
    FROM TB GROUP BY 商品编码
      

  2.   

    IF OBJECT_ID('TB') IS NOT NULL DROP TABLE TB
    GO
    CREATE TABLE TB(
    DATE DATETIME
    ,CODE VARCHAR(50)
    ,QTY INT
    ,PRICE NUMERIC(19,2)
    ,CB NUMERIC(19,2)
    )
    INSERT INTO TB
    SELECT '20091001','033001',      210,      11.9,      10.2 UNION ALL
    SELECT '20091001','033002',      520,      12,        10 UNION ALL
    SELECT '20091002','033001',      420,      10,        10.2 UNION ALL
    SELECT '20091002','033002',      600 ,     12,        10
    SELECT T1.CODE,T1.QTY,T2.TOTAL ,CONVERT(NUMERIC(19,2),T1.QTY*100.0/T2.TOTAL) 'PERCENT'
    FROM (
    SELECT  
    CODE,SUM(QTY) 'QTY'
    FROM TB 
    WHERE CB>PRICE
    GROUP BY CODE
    ) T1
    INNER JOIN (
    SELECT CODE,SUM(QTY) 'TOTAL' FROM TB GROUP BY CODE
    ) T2 ON T1.CODE=T2.CODE /*
    CODE                                               QTY         TOTAL       PERCENT
    -------------------------------------------------- ----------- ----------- ---------------------------------------
    033001                                             420         630         66.67
    */
      

  3.   

    select 商品编码,
    sum(case when 销售价格<批次成本 then 销售数量 end) as 该商品负毛利销售数量,
    sum(销售数量) as 该商品总销售数量,
    sum(case when 销售价格<批次成本 then 销售数量 end)/sum(销售数量) as  负毛利销量占比
    from 商品销售表
    group by 商品编码
      

  4.   


    回答 dawugui 和 fredrickhu , 商品编码  该商品负毛利销售数量  该商品总销售数量 负毛利销量占比(%)
    033001          1000                10000          10% 以上只是格式说明,数值是随便写的。3楼和4楼应该可以满足我的要求。谢谢各位!