我的表room_category_charges包含
等字段id room_category(id) category_charges payment_type(id)
1 1 300 1
2 1 600 2
3 2 400 1
4 2 800 2
并且还有另一个表patient_detail(patient_admission),其中选择了tpa(third_party_name)。无论是否选择了tpa名称,付款方式类型都会有所不同。
因此我试图使用以下mysql查询用例。
我想退还费用
SQL:
select rn.room_name,
CASE WHEN p.tpa_name is NULL
THEN rcc.category_charges where rcc.payment_type=1
ELSE rcc.category_charges where rcc.payment_type=2
END AS 'charges'
from estimate e,patient_detail p,room_name n
then语句中的where子句和else语句生成错误,我如何在case语句中包含where子句。
感谢。
答案 0 :(得分:1)
好的,我找到了一个解决方案,似乎工作正常。欢迎任何更好的解决方案。
SELECT rn.room_name, rcc.category_charges
FROM estimate e,room_category rc, room_name rn, room_category_charges rcc, patient_detail p
WHERE rn.room_category = rc.id and rcc.room_category=rc.id
AND e.alloted_bed = p.bed_type
AND rcc.payment_type =2 and e.alloted_bed=rn.id and p.tpa_name is not null
union
SELECT rn.room_name, rcc.category_charges
FROM estimate e,room_category rc, room_name rn, room_category_charges rcc, patient_detail p
WHERE rn.room_category = rc.id and rcc.room_category=rc.id
AND e.alloted_bed = p.bed_type
AND rcc.payment_type =1 and e.alloted_bed=rn.id and p.tpa_name is null
答案 1 :(得分:0)
where
是select
语句的一个子句,您不能在案例运算符中使用它。
case的语法如下:
CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
据我所知,您可能需要像这样的查询
select rn.room_name,
rcc.category_charges
from estimate e
join room_name rn on e.alloted_bed=rn.id
join patient_detail p on e.ipd_patient_id=p.ipd_patient_id
join room_category_charges rcc on rn.room_category=rcc.id and ((rcc.payment_type=1 and p.tpa_name is null) or (rcc.payment_type=2 and p.tpa_name is not null))