2016-10-29 3 views
0

기본 질문 인 경우 용서해주세요. 저는 SQL 초보자이며 SQL의 2 개 테이블에서 날짜 계산을 수행하는 데 도움이 필요합니다.다른 테이블에서 날짜 계산을 수행하는 방법은 무엇입니까?

ID|Age|indexdate   
    -------------------- 
    1 50 01/08/2012  
    2 52 11/11/2013  
    3 19 10/07/2015  

환자 테이블은 약 50 만 포함

환자 :

ID|Age|date   |Alive 
-------------------------- 
1 50 01/09/2013  Y 
2 52 11/05/2015  N 
3 19 20/07/2016  N 

CHD

나는 두 테이블 (환자와 CHD)가 다음과 같이 있습니다 2010-2016 년 기록 및 CHD 표에는 2012-2013 년 약 35 만 기록이수록되어 있습니다. 제가하고 싶은 것은 2012-2016 년에 몇 명의 CHD 환자가 사망했는지 확인하는 것입니다. 만약 사망 한 경우 12 개월이 경과 했습니까?

나는이 작업을 수행하는 방법을 잘 모르겠어요하지만 조인이 ID에 필요한 알고 우리는 'Y'

최종 출력을 기반으로 다음과 같이해야하지 살아과 WHERE 조건을 설정 위의 샘플 :

ID|Age|indexdate| deathdate 
--------------------------- 
2 52 11/11/2013 11/05/2015 
3 19 10/07/2016 20/07/2016 

질문이 있으시면 알려주세요.

편집 : 환자가 죽을 때까지 환자는 환자 테이블에 여러 번 나타날 수 있습니다.

감사

답변

0

날이 쿼리는 patient 테이블에서 죽음의 날짜를 얻을 수 있다고 가정 해 봅시다 :

select count(*) 
from chd c join 
    (select p.id, min(p.date) as deathdate 
     from patient p 
     where p.Alive = 'N' 
     group by p.id 
    ) pd 
    on c.id = pd.id; 
: 당신이 가입으로 원하는 것을 얻을 수 있습니다, 그리고

select p.id, min(p.date) as deathdate 
from patient p 
where p.Alive = 'N' 
group by p.id; 

그런 다음 외부 쿼리에서 where 절을 사용하여 질문에 대답 할 수 있습니다. 예 :

where deathdate >= current_date - interval '1 year' 
+0

왜 분 (p.date)을 사용하고 있습니까? 모든 환자가 다른 날짜에 죽으면 왜 우리는 분이 필요한지 잘 모릅니다. 또한 1 년이 지난 경우 오늘 날짜를 확인하지 않습니다. 날짜 (환자 테이블)와 indexdate (chd 테이블)의 차이가 1 년을 초과하는지 확인해야합니다. 감사합니다. –

+0

@lo_iQ. . . 환자가 여러 번 테이블에 나타날 수 있는지 여부에 대한 질문은 명확하지 않습니다. 환자 상태 ("살아있다", "살아 있지 않다")가있는 경우 주어진 환자의 테이블에 여러 행이있을 수 있습니다. –

+0

예 여러 번 나타납니다. 그들이 죽으면 그들은 더 이상 나타나지 않을 것입니다. –

관련 문제