Why I am getting error with this query ? Is there something I’m missing ?
So I wanted to get online_date if the “via” field is O, then if the “via” field is M I wanted to get the manual_date
x
SELECT a.seqreq,
b.idfieldb ,
c.idfieldc ,
a.number_given,
case upper(a.via) when 'O' then 'Online'
when 'O' then 'Online'
when 'M' then 'Manual'
else a.via
end as via,
case when upper(a.via) when 'O' then a.online_date
when 'M' then a.manual_date //it says error on this line ?
else a.others_date
end as date_registered
from mytablea a
left join tbl_b b on a.idfielda=b.idfieldb
left join tbl_c c on a.idfielda=c.idfieldc
left join tbl_d d on a.userEntry=d.NoIdUser
the error message :
W (1): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'when 'O' then
Advertisement
Answer
There are some syntax error in query. An comma(,) is missing after a.seqreq
. In second case
statement it will be case upper(a.via) when 'O' then a.online_date
instead of case when upper(a.via) when 'O' then a.online_date
.
SELECT a.seqreq,
b.idfieldb ,
c.idfieldc ,
a.number_given,
case upper(a.via)
when 'O' then 'Online'
when 'M' then 'Manual'
else a.via
end as via,
case upper(a.via) when 'O' then a.online_date
when 'M' then a.manual_date
else a.others_date
end as date_registered
from mytablea a
left join tbl_b b on a.idfielda=b.idfieldb
left join tbl_c c on a.idfielda=c.idfieldc
left join tbl_d d on a.userEntry=d.NoIdUser