Вопрос о case-функции: mysql: разбить значение от одного поля до двух - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть бизнес-задача разделить одно поле на два:

SUBSTRING_INDEX (SUBSTRING_INDEX (cal_participants.name, '', 1), '', -1) как memberfirst,

Это работает. Вывод представляет собой 4-значный номер, который представляет собой код города, например 7591.

Теперь мне нужно создать функцию CASE, чтобы вернуть фактическое имя местоположения и связать местоположение с командой.

Я пробовал это:

(CASE 
WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(cal_participants.name, ' ', 1), ' ', -1) as memberfirst = 7591 THEN "Europe"
END)

И мне нужно сделать псевдоним в указанном выше месте (когда 7591 - это Европа, тогда "Европа как имя команды)

SELECT 

cal_participants.participant_id as "member_id",

cal_participants.name as "member_name",

cal_meeting.meeting_id as "reference",

cal_meeting.created_at as "date",

cal_meeting.startdatetime as "start time",

cal_meeting.enddatetime as "end time",

cal_meeting.status as "status",

cal_meeting.deleted_at as "deleted time",

campaigns.name as "campaign name",

SUBSTRING_INDEX(SUBSTRING_INDEX(cal_participants.name, ' ', 1), ' ', -1) as memberfirst,

(CASE 
WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(cal_participants.name, ' ', 1), ' ', -1) as memberfirst = 7591 THEN "Europe"
END)


FROM cal_meeting

JOIN cal_participants on cal_meeting.participant_id = cal_participants.participant_id

JOIN campaigns on cal_meeting.campaign = campaigns.id

То, что я хочу, это:

1) Функция для возврата «Европа», когда memberfirst равен 7591

2) Свяжите это (Европа) с командой

Я получаюэта ошибка: Ошибка: (pymysql.err.ProgrammingError) (1064, у вас есть ошибка в вашем синтаксисе SQL; обратитесь к руководству, соответствующему вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с \ 'как memberfirst = 7591 THEN"Тест" \ nEND) \ n \ nFROM cal_meeting \ n \ nJOIN cal_participants \ 'в строке 18')

1 Ответ

0 голосов
/ 08 ноября 2019

Вам не нужен псевдоним для столбца внутри случая, когда

(CASE 
WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(cal_participants.name, ' ', 1), ' ', -1) = 7591 
   THEN "Europe"
END)

, в конце концов, вы можете добавить псевдоним после случая, когда end

(CASE 
WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(cal_participants.name, ' ', 1), ' ', -1) = 7591 
   THEN "Europe"
END) as memberfirst 
...