比如有一张表有这样四个字段:月份、销售人员、销售数量、产品单价。我希望以月份和销售人员来对销售额进行透视,编写了以下SQL语句:
select
月份,
sum (case when 销售人员='姓名1' then 销售数量*产品单价 else 0 end) as 姓名1销售额,
sum (case when 销售人员='姓名2' then 销售数量*产品单价 else 0 end) as 姓名1销售额,
sum (case when 销售人员='姓名3' then 销售数量*产品单价 else 0 end) as 姓名1销售额
from 表格
group by 月份
但是获得的结果老是跟我用EXCEL数据透视表得到的结果不同。以上语句有什么问题吗?
有两处有笔误,如果结果不同的话,需要检查一下,先对比下总金额,再对比各个的销售额,再检查姓名是否完全一致,EXCEL中经常有前后空格或是不容易显示出来的字符会有影响,用select 月份,姓名,sum(销售数量*产品单价) from 表格 group by 月份,姓名
例如:
select
月份,
sum (case when 销售人员='姓名1' then 销售数量*产品单价 else 0 end) as 姓名1销售额,
sum (case when 销售人员='姓名2' then 销售数量*产品单价 else 0 end) as 姓名1销售额,
sum (case when 销售人员='姓名3' then 销售数量*产品单价 else 0 end) as 姓名1销售额
from 表格
group by 月份,销售人员
注意事项
case when有用两种用法如下:
用法一:
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
用法二:
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
你是要按月分和销售人员来对销售额透视,而sql语句只对月份分组,正确结果应该增加分组维度
select