语法错误case postgresql

时间:2016-01-16 15:18:14

标签: postgresql

select  utilizzo.dataconsegna   case    when utilizzo.dataconsegna<=current_timestamp 
                    then    sum((EXTRACT(epoch FROM utilizzo.dataconsegna)::integer)-(EXTRACT(epoch FROM utilizzo.dataritiro)::integer)/36000) 
                    else    sum(((EXTRACT(epoch FROM utilizzo.dataconsegna)::integer)-((EXTRACT(epoch FROM utilizzo.dataconsegna)::integer)-(EXTRACT(epoch FROM current_timestamp)::integer)))-
                        (EXTRACT(epoch FROM utilizzo.dataritiro)::integer))/36000
                    end
from    vettura join prenotazione on prenotazione.targa=vettura.targa 
    join utilizzo on utilizzo.smartcard=prenotazione.smartcard AND utilizzo.dataora=prenotazione.dataora
where   vettura.targa='cn533sr' AND(current_timestamp-prenotazione.dataritiro<=interval '7 days') 

嗨,我在这个案子上遇到语法错误,你能帮帮我吗? :/

1 个答案:

答案 0 :(得分:0)

您无法将sum() 放入 case

您需要对案例的结果求和:

sum(case
     when utilizzo.dataconsegna<=current_timestamp 
       then (EXTRACT(epoch FROM utilizzo.dataconsegna)::integer)-(EXTRACT(epoch FROM utilizzo.dataritiro)::integer)/36000 
     else ((EXTRACT(epoch FROM utilizzo.dataconsegna)::integer)-((EXTRACT(epoch FROM utilizzo.dataconsegna)::integer)-(EXTRACT(epoch FROM current_timestamp)::integer)))-
                    (EXTRACT(epoch FROM utilizzo.dataritiro)::integer)/36000
end)