2014-12-10 4 views
-1

У меня есть таблица со столбцамиMYSQL: Выберите конкретное значение столбца в зависимости от состояния

id doctor_name charges_cash charges_cashless 
1  1    300   600 
2  2    200   400 

Теперь я пытаюсь запустить этот запрос:

SELECT ipd.patient_name, r.room_name, doctor.doctor_name, 
CASE p.tpa_name 
WHEN NULL 
THEN i.charges_cash 
ELSE i.charges_cashless 
END AS 'charges' 
FROM `daily_ward_entry` d, ipd_charges i, ipd_patient_entry ipd, room_charges r, 
patient_detail p, doctor 
WHERE d.doctor_visit_name = i.doctor 
AND r.id = d.room_name 
AND d.patient_name = ipd.id 
AND d.doctor_visit_name = doctor.id 

Я получаю результат для обвинений как 400, тогда как p.tpa_name равно null, я ожидаю, что это будет 200, . Я не знаю, что я делаю неправильно здесь?

В результате набор как этот

patient_name room_name doctor_name charges 
Sapna Agrawal MG-1  Dr. Dungri 400 

Спасибо.

+2

Вы пропустили остальные таблицы? – Ben

+0

Предполагается, что некоторые из ваших таблиц имеют несколько строк, которые соответствуют и, следовательно, дублируют строки в вашей основной таблице. Но, не зная, что такое структуры таблицы, и какой-то идеи тестовых данных, это почти невозможно сказать. – Kickstart

ответ

2

Вам нужен оператор IS при сравнении с NULL

CASE WHEN p.tpa_name IS NULL 
    THEN i.charges_cash 
    ELSE i.charges_cashless 
END AS 'charges' 
+0

это прекрасно, отлично работает. Большое спасибо. – Pawan

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