2016-09-27 10 views
0

에서 나는 하나 개의 테이블이 있습니다PostgreSQL을 : 쿼리 같은 테이블

id1 | date  | idreff | 
A11 | 2015-01-01| A11 
B12 | 2016-02-03| A11 
C53 | 2016-05-26| A11 

ID1은 하나 IDreff 있습니다. 나는 날짜로부터 두 종류의 연대를 추출하고자한다. 1. 거래의 시대 그 자체 2. IDreff에 기초한 최초 거래의 시대. 나는 동일한 쿼리에서 두 쿼리 (트랜잭션 ID1과 IDreff의 나이)의 결과를 얻을 방법

id1 | date  | idreff | Age of Transaction | Age IDreff 

A11 | 2015-01-01| A11  
B12 | 2016-02-03| A11  
C53 | 2016-05-26| A11 

:

그래서,이 결과를 원하는?

SELECT *, age(t1.date) AS age1, age(t2.date) FROM table t1, table t2 WHERE t1.idreff=t2.id1 

를하지만 나 각 행에 대해 두 배로 제공하기 때문에 결과는 사실이 아니다 있습니다

나는이 함께했습니다.

답변

0

당신이처럼 SQL을 수정할 수 있습니다 :

SELECT 
    t1.*, age(t1.date) AS age1, age(t1.date, t2.date) 
FROM 
    table t1, table t2 
WHERE 
    t1.idreff=t2.id1 
+0

이 쿼리는 나에게 내 이전 쿼리와 동일한 결과를 제공합니다. 두 가지 결과가 있습니다. – bandungeuy

+0

아, 미안, 이해가 안돼. 몇 가지 결과 예제를 보여줄 수 있습니까? @ bandungeuy –

0

당신은 더 정확한 작성해야 가입 :

SELECT 
    *, 
    age(t1.date) AS age1, 
    age(COALESCE(t2.date,t1.date)) as base_age 
FROM 
    table t1 
LEFT JOIN table t2 ON (t1.idreff=t2.id1 AND t1.id1<>t2.id1) 
WHERE 1 = 1