商品销售表如下:日期 商品编码 销售数量 销售价格 批次成本
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%
请高手帮忙,谢谢啦!
商品编码 ,
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 商品编码
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
*/
sum(case when 销售价格<批次成本 then 销售数量 end) as 该商品负毛利销售数量,
sum(销售数量) as 该商品总销售数量,
sum(case when 销售价格<批次成本 then 销售数量 end)/sum(销售数量) as 负毛利销量占比
from 商品销售表
group by 商品编码
回答 dawugui 和 fredrickhu , 商品编码 该商品负毛利销售数量 该商品总销售数量 负毛利销量占比(%)
033001 1000 10000 10% 以上只是格式说明,数值是随便写的。3楼和4楼应该可以满足我的要求。谢谢各位!