SQL 如何写语句 按客户分类,统计每年的所有金额!麻烦帮忙写一下,急!在线等

如题所述

不知道您是哪个数据库,SQLSERVER可以如此写

select 客户名称,
sum(case left(交易日期,4) when '2010' then 金额 else 0 end) "2010年",
sum(case left(交易日期,4) when '2011' then 金额 else 0 end) "2011年",
sum(case left(交易日期,4) when '2012' then 金额 else 0 end) "2012年",
sum(case left(交易日期,4) when '2013' then 金额 else 0 end) "2013年"
from [table]
group by 客户名称
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-10
你是oracle,还是mysql啊追问

sql server 2008

追答

你试一下,下面这个,看行不行,这是mysql的

SET @EE='';
SELECT @EE:= CONCAT(@EE,
'SUM(IF(col2=\'',col2,'\'',',col3,0))AS',col2,',')
FROM (SELECT DISTINCT col2 FROM table_name) A;
SET @QQ=CONCAT('SELECT ifnull(col1,\'total\') AS columnA,',
LEFT(@EE,LENGTH(@EE)-1),
',SUM(col3) AS TOTAL FROM table_name GROUP BY col1 WITH ROLLUP');
PREPARE stmt2 FROM @QQ;
EXECUTE stmt2;

追问

本人新手。。这个看不太懂啊~ 大哥有时间吗,能按照上面表 帮我下一个吗