如果category.category\u type!='comment'返回comment null和sum poor,fair,good,vgood,vgood,excellent,yes,no列,否则返回该列0。我有超过1条评论,但它只返回1条评论。
SELECT
categori.s_categori_id,categori.categori_name_en,categori.categori_name_ar,
categori.categori_type,question.survey_id,question.question_en,
question.question_ar,
IF(categori.categori_type != 'comment',SUM(result.poor),0) AS poor,
IF(categori.categori_type != 'comment',SUM(result.fair),0) AS fair,
IF(categori.categori_type != 'comment',SUM(result.good),0) AS good,
IF(categori.categori_type != 'comment',SUM(result.vgood),0) AS vgood,
IF(categori.categori_type != 'comment',SUM(result.excellent),0) AS
excellent,
IF(categori.categori_type != 'comment',SUM(result.yes),0) AS yes,
IF(categori.categori_type != 'comment',SUM(result.no),0) As no,
result.comment
FROM survey_categori AS categori
INNER JOIN survey_questions AS question
ON categori.s_categori_id = question.s_categori_id
INNER JOIN survey_result AS result
ON result.s_question_id = question.survey_id
WHERE categori.survey_type = 'class'
GROUP BY question.survey_id
3条答案
按热度按时间nlejzf6q1#
尝试以下查询:带case when
wixjitnu2#
在这种情况下,可以使用sqlcase语句
case语句是sql处理if/then逻辑的方法
每个case语句都必须以end语句结尾,其中else语句是可选的
就你而言:
如果条件为“1”,则应执行操作“1”,否则应执行操作“2”
case语句就是这样做的
当只有一个条件时,我们可以这样写
如果有多个条件需要满足,那么我们可以写
如果我们需要在case语句上应用不同的聚合逻辑,每次迭代一个一个记录,用逗号(,)分隔,我们可以将它写成
因为我们正在应用聚合逻辑,所以需要确保列位于GROUPBY子句中
希望这对下次申请有帮助:)
djmepvbi3#
正确使用when和groupby子句时的用例