Как я могу присоединить таблицу к себе, чтобы получить необходимые значения? - PullRequest
0 голосов
/ 09 апреля 2020

Итак, у меня есть стол, к которому я пытаюсь присоединиться, и я не совсем получаю все, что мне нужно. Итак, у меня есть таблица, которая выглядит следующим образом. Я хочу посмотреть, есть ли способ присоединить эту таблицу к себе, чтобы получить остальное, поэтому я вижу, что когда я вижу код «0013», тогда я должен получить код «0013», код_типа «9_prcdr» и med_code_ID. из 74717. Я пытался соединить это с собой, но я либо получаю недостаточно строк, либо получаю слишком много. Я посмотрел в Интернете, и я вижу, что есть функция, которую я могу попробовать, это опережающая или запаздывающая, но у меня не слишком много опыта с этим. Не могли бы вы помочь? Спасибо!

patient_id claim_id  from_dt    prcdr_cd code   code_type  med_code_ID
123        961      2004-02-14  0013     0013   9_prcdr  74717  
456        214      2004-02-21  0013     NULL   NULL     NULL   
789        961      2004-01-16  0013     0013   9_prcdr  74717  
1001       212      2004-09-24  0013     NULL   NULL     NULL   
10002      291      2004-10-02  0013     NULL   NULL     NULL   

Вот как это должно выглядеть.

patient_id claim_id  from_dt    prcdr_cd code   code_type  med_code_ID
123        961      2004-02-14  0013     0013   9_prcdr  74717  
456        214      2004-02-21  0013     0013   9_prcdr  74717  
789        961      2004-01-16  0013     0013   9_prcdr  74717  
1001       212      2004-09-24  0013     0013   9_prcdr  74717  
10002      291      2004-10-02  0013     0013   9_prcdr  74717  

И моя попытка была такой:

select * 
from t1
INNER JOIN t1 t2 ON t1.code =  t2.prcdr_cd
    AND t1.patient_id = t2.patient_id 
    AND t1.claim_id = t2.claim_id
    AND t1.from_dt = t2.from_dt

1 Ответ

1 голос
/ 09 апреля 2020

Я подозреваю, что вы можете использовать оконные функции:

select
    patient_id,
    claim_id,
    from_dt,
    prcdr_cd,
    max(code)        over(partition by prcdr_cd) code,
    max(code_type)   over(partition by prcdr_cd) code_type,
    max(med_code_ID) over(partition by prcdr_cd) med_code_ID
from t1

Предполагается, что данному prcdr_cd соответствует уникальный набор значений code, code_type и med_code_ID.

...