如果需要,请选择MYSQL

如果需要,请选择MYSQL,mysql,sql,Mysql,Sql,伙计们,我有这样的东西: select t1.milestone_id, sum(t2.value) / count(t2.value) as value2, value3 from ( SELECT milestone_id, SUM(value) value , CASE WHEN (status !='done') THEN (value ='0') ELSE value END as value3 FROM project_

伙计们,我有这样的东西:

select  t1.milestone_id, sum(t2.value) / count(t2.value) as value2, value3
from    (
            SELECT  milestone_id, SUM(value) value , CASE WHEN (status !='done') THEN (value ='0') ELSE value END as value3
            FROM    project_has_tasks
            WHERE   project_id='52' and milestone_id !=0 
            GROUP BY milestone_id
        ) t1
join    (
            SELECT  milestone_id, SUM(value) value
            FROM    project_has_tasks
            WHERE   project_id='52' and milestone_id !=0 
            GROUP BY milestone_id
        ) t2
on      t1.milestone_id >= t2.milestone_id
group by t1.milestone_id
order by t1.milestone_id asc 
得到这个:

您能帮我将值3作为除0以外的值2获取吗 例如:

select  t1.milestone_id, sum(t2.value) / count(t2.value) as value2, value3
from    (
            SELECT  milestone_id, SUM(value) value , CASE WHEN (status !='done') THEN (value ='0') ELSE value END as value3
            FROM    project_has_tasks
            WHERE   project_id='52' and milestone_id !=0 
            GROUP BY milestone_id
        ) t1
join    (
            SELECT  milestone_id, SUM(value) value
            FROM    project_has_tasks
            WHERE   project_id='52' and milestone_id !=0 
            GROUP BY milestone_id
        ) t2
on      t1.milestone_id >= t2.milestone_id
group by t1.milestone_id
order by t1.milestone_id asc 


谢谢您的建议。

修改您的第一行:

SELECT t1.milestone_id, sum(t2.value) / count(t2.value) as value2, IF(value3=0, sum(t2.value) / count(t2.value), value3) as value3
IF语句的工作原理如下:

IF(,)

若表达式不为NULL且不为0,则视为真。

谢谢您的建议。下面的代码工作正常:)


#1054-字段列表中的未知列“value2”忘记了计算value2如果我将使用:选择t1.milestone_id,总和(t2.value)/计数(t2.value)作为value2,如果(value3=0,总和(t2.value)/计数(t2.value),值3作为值3,则值3与值2相同
select  t1.milestone_id, sum(t2.value) / count(t2.value) as value2, IF(value3 !='0', sum(t2.value) / count(t2.value), value3)as value3
    from    (
                SELECT  milestone_id, SUM(value) value , CASE WHEN (status !='done') THEN (value ='0') ELSE value END as value3
                FROM    project_has_tasks
                WHERE   project_id='52' and milestone_id !=0 
                GROUP BY milestone_id
            ) t1
    join    (
                SELECT  milestone_id, SUM(value) value
                FROM    project_has_tasks
                WHERE   project_id='52' and milestone_id !=0 
                GROUP BY milestone_id
            ) t2
    on      t1.milestone_id >= t2.milestone_id
    group by t1.milestone_id
    order by t1.milestone_id asc