2012-08-08 38 views
0
SELECT * FROM ( 
select student_id, class_id, 
     sum(number*(1-abs(sign(subject-1)))) as sub1, 
     sum(number*(1-abs(sign(subject-2)))) as sub2, 
     sum(number*(1-abs(sign(subject-3)))) as sub3, 
     sum(number*(1-abs(sign(subject-4)))) as sub4, 
     sum(number*(1-abs(sign(subject-5)))) as sub5, 
     sum(number*(1-abs(sign(subject-6)))) as sub6 
from result GROUP BY student_id,class_id) m 
where class_id = '7' 

其查詢正常工作。但是,如果主題值爲空,那麼所有學生記錄都不會顯示在該主題中。 我需要更多的發燒。Mysql數據透視表與where子句和總和值

+0

垂直或水平的任何方法?你想在每一行中總結sub1,2,... 6,或者你想總結sub1,sub2的列... – Hawili 2012-08-08 04:42:48

回答

2

我不知道是否有使用MySQL的直接,但我可以建議你使用PHP

$sql = mysql_query("SELECT m.* FROM ( 
select student_id, class_id, 
     sum(number*(1-abs(sign(subject-1)))) as sub1, 
     sum(number*(1-abs(sign(subject-2)))) as sub2, 
     sum(number*(1-abs(sign(subject-3)))) as sub3, 
     sum(number*(1-abs(sign(subject-4)))) as sub4, 
     sum(number*(1-abs(sign(subject-5)))) as sub5, 
     sum(number*(1-abs(sign(subject-6)))) as sub6 
from result GROUP BY student_id,class_id) m 
where m.class_id = '7'"); 

$row = mysql_fetch_array($sql); 
$sum = 0; 
for($i = 1; $i < count($row); $i++) { 
    $sum += isset($row['sub' . $i]) ? $row['sub' . $i] : 0; 
} 
+0

感謝回覆,但是我怎樣才能動態地計算動態m.sub1 + m.sub2 ??? Plz回答 – Zia 2012-08-08 04:47:32

+0

我修改了我的答案。我希望這將是你所需要的 – 2012-08-08 04:54:37