2012-09-29 55 views
1

列我基本上有一个表:SQL总和行和投入的选择

person activity-code activity-value 

有多种活动的代码(其中约17)和每人活性值。对于〔实施例:

A 1 10 
A 1 12 
A 2 4 
B 1 5 
B 2 3 
B 2 8 

我想是返回类似的select语句:

​​

所以第一列person第二列是该人的所有activity-values for the activity-code 1的总和。 第三列是该人的所有activity-values for the activity-code 2的总和。 etc ...

最后,我想这样做,并在那里使用OUTFILE命令,因为我想将总计转储到要导入到Excel文件的文件。

看起来好像有一个子查询在那里,但我不够先进,以弄清楚。

任何帮助将不胜感激。我可以添加细节,如果这将有所帮助。

+0

它看起来像: SELECT *,SUM(CASE当'活动ID' = 1,则值完)共1页,SUM(CASE当'活动ID' = 2,则值结束)total2,SUM(CASE当'活动ID' = 3然后值结束)total3 FROM'活动'WHERE ... 是我想要的,但我真的不想输入SUM(CASE ...结束)17次。 – brechmos

回答

2

不幸的是,Mysql缺少其他数据库中存在的pivot命令,这使得这类事情变得小菜一碟。你坚持的东西,如

select 
     person, 
     sum(case activitycode when 1 then activityvalue else 0 end), 
     sum(case activitycode when 2 then activityvalue else 0 end), 
     .... 
from 
     yourtable 
group by 
     person 
+0

'+ 1'为你的好友!顺便说一下,你正在使用什么SQL格式化? :D –

+0

SQL格式化程序?我只是在输入:) – podiluska

+0

谢谢。那我就跟那个一起工作吧。 – brechmos