我在 PostgreSQL 中有一个 CASE 查询的情况。
我的表(“statut_existenta_pf”)看起来像这里的图片http://cl.ly/0L1Q2f3v3L0s3V1p3P3X
我编写了以下查询,它应该与该表的结果相匹配:
SELECT p.*, se.se_id_statut, ne.ne_denumire
FROM persoane_fizice p,
statut_existenta_pf se,
nom_statut_existenta ne
WHERE p.pf_id = :id_pf
AND se.se_id_pf = p.pf_id
AND se.se_id_statut IN
(CASE
WHEN se_data_inceput IS NULL THEN
(SELECT se_id_statut FROM statut_existenta_pf
WHERE se_id_pf = :id_pf
ORDER BY se_id DESC LIMIT 1)
WHEN se_data_inceput IS NOT NULL AND se_data_sfarsit IS NULL THEN
(SELECT se_id_statut FROM statut_existenta_pf
WHERE se_id_pf = :id_pf
ORDER BY se_id DESC LIMIT 1)
ELSE
(SELECT se_id_statut FROM statut_existenta_pf
WHERE se_id_pf = :id_pf
AND CURRENT_DATE BETWEEN se_data_inceput AND se_data_sfarsit)
END)
AND se.se_id_statut = ne.ne_id
问题是我得到 0 个结果,我应该返回一个结果,即“se_data_inceput”为“2010-03-31”且“se_data_sfarsit”为空的结果。
有任何想法吗?
谢谢你。