2017-04-16 25 views
1

最小值連接兩個表我有T1SQL使用從第二表

ID STATUS 
1 NEW 
2 NEW 

我有T2

T1ID OWNER OWNDATE 

1  A  01.01.2017 10:00:00 
1  B  02.02.2017 10:00:00 
1  C  03.03.2017 10:00:00 
2  B  02.02.2017 10:00:00 
2  C  03.03.2017 10:00:00 

由於A爲ID 1具有最小OWNDATE並且由於B中ID 2具有最小OWNDATE

我想作爲結果

1 NEW A 
2 NEW B 

但加入後,我不知道在哪裏把MIN,所以我可以從兩個表

SELECT 
    T1.ID, T1.STATUS, T2.OWNER 
FROM 
    T1 
JOIN 
    T2 ON T1.ID = T2.T1ID 

找出最小預先感謝您

+0

請你進行標記使用的數據庫管理系統,如MySQL和SQL-Server中,甲骨文和如果已知版本號了。一些SQL的風格允許可以提供更有效答案的方法。 –

+0

我現在做了 - db2。謝謝 – Dejan

回答

1

以下是純SQL中的解決方案,使用子查詢,它應該可以在大多數數據庫上工作。

SELECT 
    T1.ID, T1.STATUS, T2.OWNER 
FROM 
    T1 
JOIN 
    T2 
ON T1.ID = T2.T1ID 
    AND t2.owndate = (
     select min(owndate) FROM t2 
     where t2.T1ID = t1.id 
) 
1

在大多數RDBMS,你可以使用Windows的分析功能

SELECT T1.ID, 
     T1.STATUS, 
     T.OWNER 
FROM T1 
    INNER JOIN 
(SELECT t2.*, 
     row_number() over(partition BY t1id 
         ORDER BY owndate) AS seq 
    FROM t2 
) t 
    ON t1.id=t.t1id 
    AND t.seq=1 
0
select t1.*, t3.OWNER 
from t1 
inner join lateral 
(
    select * from t2 
    where t1.id=t2.T1ID 
    order by t2.OWNDATE 
    fetch first rows only 
) t3 on 1=1