2017-04-13 1 views
0

나는 MySQL의에서이 쿼리를 가지고 :MYSQL SELECT IF의와 문 및

SELECT col1, col2, coletc, IF(a.status_working == 'normal', a.status_working == 'NN' AND a.status_working == 'overtime', a.status_working == 'OT') as status_working 

내 전체 쿼리 :

HIDDEN for security reasons. 

MYSQL 나에게 오류를 반환합니다. 후 출력 NN 쓰기 '정상' = 을 status_working 경우 == '초과 근무' 후, 출력 OT 쓰기를 status_working 경우 == 을 status_working 경우 나는 세 가지 조건을 확인해야합니다 'overtime_s' 다음 출력을 쓰십시오 OTS

나는 정말 좋은 사람이 아니므로 누군가 나를 도울 수 있습니까?

감사합니다.

+0

if 문'IF (조건, 진정한 결과, 거짓 결과)처럼 작동하는 경우 '귀하의 예제에서 당신은'a.status_working normal'' 3 개의 조건'a.status_working =='를 가지고 == 'NN'AND a.status_working == 'overtime'과'a.status_working == 'OT''는'case' 문으로 더 나을 수도 있습니다. https://dev.mysql.com/doc/refman /5.7/en/control-flow-functions.html like ... nvm 누군가 방금 방법을 게시했습니다. –

+0

전체 검색어가 잘못되었습니다. 'group by a.id'를 사용하고 있지만 select 절에 집계 함수가없는 다른 컬럼을 선택하고 있습니다. 'group by '에 대한 튜토리얼을 읽고 현재 쿼리 작업을하십시오. 그렇다면'case' 만 추가하면됩니다. 모두 제일 좋다! – Utsav

답변

0

사용 사례

SELECT col1, col2, coletc, 
CASE status_working 
    when 'normal' then 'NN' 
    when 'overtime' then 'OT' 
    when 'overtime_s' then 'OTS' 
END as status_working 
From your_table 
+0

이 쿼리를 실행하면 오류가 발생합니다. 'CASE a.status_working'normal 'then'NN ''overtime 'then'OT 'END AS는'act_hours '로 status_working, ROUND (a.act_hours, 1) .personnel_name' 많은 예기치 않은 토큰 오류가 발생합니다. –

+1

먼저 case 문없이 쿼리를 실행하십시오. 'case'없이 오류가 발생하지 않으면 전체 쿼리를 제공하십시오. 다른 방법으로 먼저 나머지 쿼리를 수정하십시오. – Utsav

+0

질문이 수정되었습니다. 전체 쿼리가 질문에 추가되었습니다. 확인해 주시겠습니까? 덕분에 –