2017-06-20 120 views
0
id name school date 
1 John QVS 1/3/2000 
1 John RKS 1/4/2008 
2 Sera ACS 1/2/2009 
2 Sera WCS 1/4/2011 
3 Jack YUN 1/4/2014 
3 Jack KIL 1/3/2017 

姓名,學校和日期都來自不同的表格,即名稱,學校和日期連接在一起的內部連接。只在最大字段上選擇行

我想選擇只有最新日期的行。結果應該是:

id name school date 
1 John RKS 1/4/2008 
2 Sera WCS 1/4/2011 
3 Jack KIL 1/3/2017 
+0

你嘗試過什麼?有很多方法可以做到這一點。 –

+0

給我然後...我沒有試過因爲我不知道從哪裏開始從 –

+0

第一張桌子不是一個dtabase表,但結果從一個加入的查詢 –

回答

0

試試這個:

select * from table t1 where not exists ( select 1 from table t2 where t1.id = t2.id and t1.name = t2.name and t1.date < t2.date )

+0

theres 3個表合併到上面的第一個列表 –

0

您可以使用此。我希望它能爲你工作。

SELECT 
tb1.id 
,tb1.name 
,tb1.school 
,tb1.[date] 
FROM 
yourTable tb1 
where [date] IN 
(
SELECT MAX([date]) FROM yourTable tb2 WHERE tb1.id = tb2.id GROUP BY tb2.id 
) 
+0

沒有tb1。學校,它的tb2.school和tb3.date –

+0

你可以給我所有的表格結構嗎? –

+0

請正確地從頂部讀取 –

0

您可以使用Row_number。 如果你想與最新的日期的所有行,然後使用dense_rankrank

;with temp as 
(
    select id, 
      name, 
      school, 
      [date], 
      Row_number() over(partition by id order by [date] desc) as [Rn] 
      -- rank()\dense_rank() to get all latest date. 
    from yourTable 
) 
select  id, 
      name, 
      school, 
      [date] 
from temp 
where Rn = 1 

演示鏈接:http://rextester.com/YTH8889

+0

我仍然希望日期的值 –

+0

您可以選擇任何您想要的列,我使用包含'日期'列的'select *'已經 – TriV

+0

某些ID仍在重複...我只需要該行最近可用的 –