Как выбрать один из множества данных (Oracle SQL) - PullRequest
0 голосов
/ 12 марта 2020

У меня есть запрос

SELECT * FROM PPI_CD WHERE PATIENT_NO = 14683

В результатах этого запроса отображаются одни и те же данные, основанные на PATIENT_NO

enter image description here

Как заказать только самые последние данные? только один

полный запрос

SELECT
    PPI_ID,
    co.order_no,
    p.RM_NO,
    co.patient_name,
    EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM p.DOB) as Age,
    p.sex,
    co.order_date as TGL_MASUK,
    NVL(il.NAME, '0') as ICD,
    NVL(ppi.HPA_UC, '0') AS UC,
    NVL(ppi.HPA_IVL, '0') AS IVL,
    NVL(ppi.HPA_CVL, '0') AS CVL,
    NVL(ppi.HPA_ETT, '0') AS ETT,
    NVL(ppi.IRS_VAP, '0') AS VAP,
    NVL(ppi.IRS_PLEB, '0') AS PLEB,
    NVL(ppi.IRS_ISK, '0') AS ISK,
    NVL(ppi.IRS_IAD, '0') AS IAD,
    NVL(ppi.TB, '0') AS TB,
    NVL(ppi.HK, '0') AS HK,
    NVL(ppi.AB, '0') AS AB,
    NVL(ppi.ANTIBIOTIK , '0') AS ANTIBIOTIK,
    NVL(ppi.DEKU, '0') AS DEKU,
    NVL(ppi.JK_DARAH , '0') AS DARAH,
    NVL(ppi.JK_SWAB , '0') AS SWAB,
    NVL(ppi.JK_SPUTUM , '0') AS SPUTUM,
    NVL(ppi.JK_URINE , '0') AS URINE,
    NVL(ppi.TEMP, 'N/A') AS TEMP
FROM case_orders co
LEFT JOIN PPI_CD cd
ON cd.patient_no = co.patient_no
LEFT JOIN illness_lists il
ON il.illness_no = cd.illness_no
LEFT JOIN patients p
ON p.contact_no = co.patient_no
LEFT JOIN PPI ppi
ON ppi.RM_NO = p.RM_NO
WHERE CO.status_no=5
ORDER BY CO.ORDER_DATE ASC;

проблема с этими enter image description here из 2 данных, которые должны быть только одним данными

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Использование row_number():

select pc.*
from (select pc.*, row_number() over (partition by PATIENT_NO order by pc.post_date DESC) as seq
      from PPI_CD pc
     ) pc
where pc.seq = 1;
0 голосов
/ 12 марта 2020

Только для одного пациента вы можете заказать и ограничить строку:

select *
from ppi_cd
where patient_no = 14683
order by posted_date desc
fetch first row only

Если вы хотите самую последнюю запись для patient_no, вы можете сделать:

select c.*
from ppi_cd c
where c.posted_date = (
    select max(c1.posted_date) from ppi_cd c1 where c1.patient_no = c.patient_no
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...