2014-12-07 2 views
0

세 개의 테이블이 있습니다. 이 표에는 공통 구성원이있을 필요가 없습니다.특정 레코드에 대해 세 개의 다른 테이블에있는 열의 최소값을 얻는 방법

우선 OPT_OUT 테이블이다

**MemberId**   **Opt_out_Date** 
123    12-Jun-2014 
234    7-Dec-2014 
789    10-March-2014` 

둘째 Cov_End 테이블이다

**MemberId**  **Cov_End_Date** 
    123    30-Jun-2014 
    234    31-Dec-2014 
    345    30-Sept-2014 
    891    30-Oct-2014 

번째 테이블 인 Decsd_Date 테이블

**MemberId**   **Deceased_Date** 
    123     23-Jun-2014 
    345     17-Sept-2014 
    456     23-Jun-2014 
    678     25-Aug-2014 

결과 이렇게 같아야

**MemberId**  **Min_Date** 
    123   12-Jun-2014  
    234   7-Dec-2014 
    345   17-Sept-2014 
    456   23-Jun-2014 
    678   25-Aug-2014 
    789   10-March-2014 
    891   30-Oct-2014 

최선의 방법으로 단일 쿼리에서이 결과를 얻고 싶습니다.

+1

(MS SQL 2012 사용) 질문하지만 항상 사용하고있는 DBMS (Postgres, Oracle, ...)에 대한 태그를 추가해야합니다. 매우 자주 응답은 사용되는 DBMS에 따라 달라지며보다 효율적인 DBMS 특정 솔루션이 있습니다. –

답변

2

당신은 테이블을 병합하고 파생 테이블로 결과를 사용하는 union all 연산자를 사용할 수 있습니다

SELECT MemberId, MIN(Date) AS "Min_Date" 
FROM (
    SELECT MemberId, Cov_End_Date AS "Date" FROM Cov_End 
    UNION ALL 
    SELECT MemberId, Opt_out_date AS "Date" FROM Opt_Out 
    UNION ALL 
    SELECT MemberId, Deceased_Date AS "Date" FROM Decsd_Date 
) src 
GROUP BY MemberId 

Sample SQL Fiddle이 아마의 경우는 아니지만

+0

감사합니다. 내가 필요한 것입니다. – Dhiren