首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有where子句和sum值的Mysql数据透视表

带有where子句和sum值的Mysql数据透视表
EN

Stack Overflow用户
提问于 2012-08-08 12:34:52
回答 1查看 699关注 0票数 0
代码语言:javascript
复制
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'

它查询工作正常。但如果subject值为空,则所有学生记录都不会显示在该subject中。我需要再发一次烧。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-08 12:40:29

我不知道是否有直接使用mysql的方法,但我可以建议您使用php。

代码语言:javascript
复制
$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;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11857715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档