2015-12-17 6 views
-3

My MySQL QueryНемного проблемы с моим запросом MySQL

Ok, так что я пытаюсь добавить еще один столбец (leave_remaining), который будет отображаться, что если leave_status является «КАМИ», то leave_remaining покажет количество дней отпусков этот сотрудник ушел. Я продолжаю получать ошибки. Какой здесь правильный синтаксис? Спасибо

Это работает:

select id,leave_started,leave_ended,no_of_leave_allowed, 
leave_ended-leave_started AS no_of_leaves_taken, 
if (leave_ended-leave_started >no_of_leave_allowed, 
'leave exceeded','ok')as leave_status 
from leave_taken; 

Это не:

if (leave_status,'ok', 
(no_leave_allowed-no_leaves_taken))as leave_remaining 
from leave_taken; 
select * from leave_taken; 
+4

Пожалуйста, добавьте свой вопрос к вопросу в текстовом формате – dan08

+2

Каковы ошибки? Что вы ожидаете получить? Что вы получаете вместо этого? –

+0

Это говорит о неизвестном столбце для leave_status. Также, если это недействительно в этой позиции – Tommac725

ответ

0

Если я вас правильно понять, я думаю, что вы хотите:

SELECT 
    id, leave_started, leave_ended, no_of_leave_allowed, 
    (leave_ended - leave_started) AS no_of_leaves_taken, 
    IF(
     (leave_ended - leave_started) > no_of_leave_allowed, 
     'leave exceeded', 
     'ok' 
    ) AS leave_status, 
    IF (
     (leave_ended - leave_started) > no_of_leave_allowed, 
     (no_of_leave_allowed - (leave_ended - leave_started)), 
     0 
    ) AS leave_remaining 
FROM leave_taken; 

Хотя не уверен, как вы определили leave_started и leave_ended, что вы можете вычитать их так ...

http://sqlfiddle.com/#!9/16cdb3/6

0

SELECT, должен быть перед IF, Altough вы ничего не делаете.

Правильное утверждение

SELECT something as alias, something_else as alias_else, if(,,) as alias_if 
FROM table 
WHERE where = clause 

Когда вы должны использовать некоторые заявления (IF или СЛУЧАЙ, например), то результат в поле, он должен быть внутри отборное.

Смежные вопросы