somehow Im getting data for before(BLAB)... but no data for after(ALAB)....
So a patient usually gets a lab before the procedure and after the procedure My code was able to capture teh Before but not the after....
WITH BLAB AS
(
SELECT /*+PARALLEL*/
PAT.PATID_CD,
PAT.NOTED_DT,
LAB.COLLECTION_DT,
LAB.RESULT_DE,
LAB.UNI_LAB_CD,
LAB.PROCEDURE_DE,
RANK() OVER (PARTITION BY LAB.PATID_CD, PAT.NOTED_DT ORDER BY LAB.COLLECTION_DT DESC) AS RNK
FROM KPHC_PROBLEM_LIST_CN PAT
LEFT OUTER JOIN LAB
ON
PAT.PATID_CD = LAB.PATID_CD
AND LAB.REGION_CD = PAT.REGION_CD
AND LAB.REGION_CD ='CN'
AND LAB.COLLECTION_DT BETWEEN TO_DATE ('01-JAN-12') AND TO_DATE ('01-JAN-16')
AND (PROCEDURE_DE LIKE '%EGFR%'
OR PROCEDURE_DE LIKE '%INR%'
OR PROCEDURE_DE LIKE '%HEMOG%'
OR PROCEDURE_DE LIKE '%HEMATR%'
OR PROCEDURE_DE LIKE '%PLATE%'
OR PROCEDURE_DE LIKE '%CRCL%'
OR PROCEDURE_DE LIKE '%CREATI%'
OR PROCEDURE_DE LIKE '%PTT%'
OR PROCEDURE_DE LIKE '%ANTI-XA%')
AND LAB.COLLECTION_DT < PAT.NOTED_DT
)
, ALAB AS
(
SELECT /*+PARALLEL*/
PAT.PATID_CD,
PAT.NOTED_DT,
LAB.COLLECTION_DT,
LAB.RESULT_DE,
LAB.UNI_LAB_CD,
LAB.PROCEDURE_DE,
RANK() OVER (PARTITION BY LAB.PATID_CD, PAT.NOTED_DT ORDER BY LAB.COLLECTION_DT ASC) AS RNK
FROM KPHC_PROBLEM_LIST_CN PAT
LEFT OUTER JOIN LAB
ON
PAT.PATID_CD = LAB.PATID_CD
AND LAB.REGION_CD = PAT.REGION_CD
AND LAB.REGION_CD ='CN'
AND LAB.COLLECTION_DT BETWEEN TO_DATE ('01-JAN-12') AND TO_DATE ('01-JAN-16')
AND LAB.UNI_LAB_CD = 'HGB_'
AND (PROCEDURE_DE LIKE '%EGFR%'
OR PROCEDURE_DE LIKE '%INR%'
OR PROCEDURE_DE LIKE '%HEMOG%'
OR PROCEDURE_DE LIKE '%HEMATR%'
OR PROCEDURE_DE LIKE '%PLATE%'
OR PROCEDURE_DE LIKE '%CRCL%'
OR PROCEDURE_DE LIKE '%CREATI%'
OR PROCEDURE_DE LIKE '%PTT%'
OR PROCEDURE_DE LIKE '%ANTI-XA%')
AND LAB.COLLECTION_DT > PAT.NOTED_DT
)
SELECT /*+PARALLEL*/
BLAB.PATID_CD,
BLAB.NOTED_DT AS PROCEDURE_DATE,
BLAB.PROCEDURE_DE AS LAB_TYPE,
BLAB.COLLECTION_DT AS DATE_TAKEN_AFTER,
BLAB.RESULT_DE AS LAB_BEFORE,
ALAB.COLLECTION_DT AS DATE_TAKE_AFTER,
ALAB.RESULT_DE AS LAB_AFTER
FROM
ALAB,
BLAB
WHERE
ALAB.PATID_CD = BLAB.PATID_CD
AND ALAB.NOTED_DT = BLAB.NOTED_DT
AND ALAB.RNK = 1
AND BLAB.RNK = 1;
如果要引用行的显示顺序,则需要一个ORDER BY
子句
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.