2017-04-13 17 views
0

私はMySQLでこのクエリを持っている:MYSQL SELECT IFステートメントを使用して、AND

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は私にエラーを返します。私は == をstatus_working場合、その後、OT出力を書く == '残業'をstatus_working場合 = '通常' をstatus_working が、その後、NN出力を書く場合3つの条件を作成する必要があります'overtime_s'次に出力を書きますOTS

私は本当にmysqlがうまくないので、誰かが私を助けることができますか?

ありがとうございます。

+0

AN文が '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' when 'overtime' then 'OT' END_status AS_act_hours、a ROUND(a.act_hours、1) .personnel_name'多くの予期しないトークンエラーが発生します。 –

+1

まず、caseステートメントを使用せずにクエリを実行します。 'case'を指定せずにエラーが発生しない場合は、クエリ全体を指定します。それ以外の場合は、最初に残りのクエリを修正します。 – Utsav

+0

質問が編集されました。全体の質問が質問に追加されました。それをチェックしてもよろしいですか?ありがとうございました –

関連する問題