MySQL:如何按别名的名称获取和列
我这里有一个查询我得到了一个错误别名说未知列,这有什么问题。我需要得到16个法官61,16个法官62,16个法官63的总和MySQL:如何按别名的名称获取和列,mysql,sql,Mysql,Sql,我这里有一个查询我得到了一个错误别名说未知列,这有什么问题。我需要得到16个法官61,16个法官62,16个法官63的总和 SELECT s.contestant_number, c.contestant_name, j.judge_name, SUM(CASE WHEN s.crit_id =17 AND s.judge_id = '61' THEN score END ) AS 16_judge_61, SUM(CASE WHEN s.crit_id =17 AND s.judge_
SELECT s.contestant_number, c.contestant_name, j.judge_name,
SUM(CASE WHEN s.crit_id =17 AND s.judge_id = '61' THEN score END ) AS 16_judge_61,
SUM(CASE WHEN s.crit_id =17 AND s.judge_id = '62' THEN score END ) AS 16_judge_62,
SUM(CASE WHEN s.crit_id =17 AND s.judge_id = '63' THEN score END ) AS 16_judge_63,
(16_judge_61 + 16_judge_62 + 16_judge_63) as total //<--here is the problem
//<--i also tried (sum(16_judge_61) + sum(16_judge_62) + sum(16_judge_63))as total not working as well
FROM tbl_score s INNER JOIN tbl_contestant c ON s.contestant_number = c.contestant_number
INNER JOIN tbl_judges j ON j.judge_id = s.judge_id
WHERE c.gender = 'male'
AND c.con_id = s.con_id
AND j.judge_id =62
GROUP BY s.contestant_number
选择s.选手编号、c.选手姓名、j.评委姓名、,
求和(当s.crit_id=17,s.judge_id=61,则得分结束)为16_judge_61,
求和(当s.crit_id=17,s.judge_id=62,则得分结束)为16_judge_62,
求和(当s.crit_id=17,s.judge_id=63,则得分结束)为16_judge_63,
(16_judge_61+16_judge_62+16_judge_63)总计/不确定您为什么使用SUM(CASE…)
您可以使用子查询,如下所示:
SELECT *, (16_judge_61+16_judge_62+16_judge_63) AS total FROM (
-------------Your wholequery----------------
) t
您的错误是由于尝试在定义别名的同一SELECT
子句中使用别名而导致的。无法执行此操作,因为尚未计算别名
对这个问题的下意识反应是将16\u judge\u 61
、16\u judge\u 62
和16\u judge\u 63
的三个CASE
语句相加。但是,您可以通过使用三个判断id
值的WHERE IN
将这三个条件组合成一个案例
语句来改进这一点
请尝试以下查询:
SELECT s.contestant_number,
c.contestant_name,
j.judge_name,
SUM(CASE WHEN s.crit_id = 17 AND s.judge_id IN (61,62,63)
THEN score END ) AS total
FROM ...
尝试删除案例陈述中的SUM,然后将SUM添加到(16_judge+…)
SELECT s.contestant_number,
c.contestant_name,
j.judge_name,
SUM(CASE WHEN s.crit_id = 17 AND s.judge_id IN (61,62,63)
THEN score END ) AS total
FROM ...