2012-09-29 81 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