0
select student_id, class_id, section_id, exam_date, exam_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 
where class_id = '7' and section id = '3' and YEAR(exam_date) = '2012' and exam_id = '3'
GROUP BY student_id

where句を使用してフィルタリングすると、すべての数値が0になるという問題があります。where句を指定せずにクエリを実行すると、すべてのデータベースからの結果が得られます。where句を使用してクエリをフィルタリングするにはどうすればよいですか?誰か助けてもらえますか?

4

2 に答える 2

1

whereの前にクエリをラップします。

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) m
where class_id = '7' 
于 2012-08-07T09:31:02.810 に答える
1

class_idでグループ化する必要もあります

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'
于 2012-08-07T09:32:33.067 に答える