에 가입 내가 전체 쿼리 (117)를 반환하면서 그 자체로 BML 118 개 행을 반환SQL - 왼쪽 외부가 null 필드
SELECT *
FROM (SELECT mi.visit_id, mi.event_id, mi.patient_id, mi.mrn, mi.reg_date,
mi.d_date, mi.bml_count, mi.TYPE, mblp.baby_patient_id,
mblp.baby_birthdate
FROM ajmid.km0076_motherinfo_test mi LEFT JOIN alfayezb2.mbl_patients mblp
ON mblp.mother_patient_id = mi.patient_id
--works here
AND ( TO_CHAR (mblp.baby_birthdate, 'mm/dd/YYYY') =
TO_CHAR (mi.reg_date, 'mm/dd/YYYY')
OR TO_CHAR (mblp.baby_birthdate, 'mm/dd/YYYY') =
TO_CHAR (mi.reg_date - 1, 'mm/dd/YYYY')
OR TO_CHAR (mblp.baby_birthdate, 'mm/dd/YYYY') =
TO_CHAR (mi.reg_date + 1, 'mm/dd/YYYY')
)
) bml
LEFT OUTER JOIN --doesn't work here
(SELECT ROW_NUMBER() OVER (PARTITION BY vis.patient_id ORDER BY vis.admission_date_time)
num,
vis.admission_date_time, vis.visit_id, vis.patient_id,
vis.facility_id
FROM visit vis) v ON bml.baby_patient_id = v.patient_id
WHERE v.num = 1
ORDER BY bml.reg_date
이 쿼리를 가지고, 그 이유는 널 (null)로 baby_patient_id 1 행은 그래서, BML 반환을이다 나는 그것을 보여주기 위해 왼쪽 외부 조인을 사용했다. 그러나 그것은 아직도 보이지 않고있다!
bml의 모든 행을 표시하려면 어떻게해야합니까? 내가
두꺼비 9.6를 사용하고
는 가능한 원인은 필터/기준 (WHERE 절) v.num에 대한 null 값이있는 행을 제거한다 당신
v.num은 파티션 요소이므로 방문 테이블에서 첫 번째 방문을 받아야합니다. 표시하고자하는 레코드에는 mbl_patients 및 방문에 대한 데이터가 포함되어 있지 않지만 데이터를 표시 할 수있었습니다. 그럼에도 불구하고 bml 내부 쿼리에 표시하기 위해 동일한 기법 (LEFT JOIN)을 사용했지만 전체 쿼리에 대해 표시되지 않습니다. – user1495987
그런 다음 외부 쿼리에서 NVL (v.num, 1)을 사용해야 할 수도 있습니다. where 절은 널 (null)로 행을 필터링 (제거)합니다. – codenheim
조건을 제거하려고 시도했지만 (여전히 필요한 경우) 레코드가 표시되지 않습니다! – user1495987