我正在尝试使用以下代码,但它对我不起作用。
SELECT t1.*,t2.service_id,t2.provider_name ,t3.id,t3.api_name,t4.id, t4.member_no,
(
CASE t1.status WHEN 0 THEN 'Success'
WHEN 1 THEN 'Failed'
WHEN 4 THEN 'Hold/InQueue'
WHEN 6 THEN 'Pending'
WHEN 9 THEN 'Error'
) AS status1,
(
CASE t1.stv WHEN 0 THEN 'TopUp'
WHEN 1 THEN 'scheme' END
) AS scheme
FROM tbl_mobile_recharge t1 INNER JOIN tbl_service_providers t2
ON t1.opcode = t2.id
INNER JOIN tbl_mobile_api_master t3
ON t1.api_id = t3.id
INNER JOIN tbl_retailer t4
ON t1.user_id = t4.id
WHERE 1=1 AND t1.added_on >='2016-03-01 00:00:00' AND t1.added_on <='2016-03-11 23:59:59'
AND 1=1 AND 1=1
ORDER BY t1.id DESC
LIMIT 0,8
我在下面收到错误。
发生数据库错误错误号:1064
您有错误 在你的SQL语法中;查看与MySQL对应的手册 服务器版本,用于正确的语法,使用附近&#39;)作为status1,(案例 t1.stv当0然后&#39; TopUp&#39;当1然后&#39; scheme&#39;作为方案&#39;在 第1行
请帮忙。
答案 0 :(得分:4)
你的第一个案例陈述错过了它的“结束”。可能还想添加默认值。
答案 1 :(得分:1)
您在第一个END
声明中缺少CASE
标记。请尝试使用此代码:
CASE t1.status WHEN 0 THEN 'Success'
WHEN 1 THEN 'Failed'
WHEN 4 THEN 'Hold/InQueue'
WHEN 6 THEN 'Pending'
WHEN 9 THEN 'Error'
END