2017-02-15 70 views
0

我有一個Access表看起來像這樣:SQL:集團通過事業條件

ID  Country  Application Date 
-------------------------------- 
12  France  12/01/2016 
12  Germany  01/01/2017 
13  Germany  01/02/2017 
14  Spain   23/01/2017 
14  Germany  01/02/2017 
15  
16  Greece  01/01/2017 

我想獲得每ID的單一occurence與最近的申請日。

我嘗試這樣做:

SELECT ID, Country, Max(Application Date) 
FROM MyTable 
GROUP BY ID 

但訪問被拒絕此查詢,並希望我的條款,無法再工作,加上國家在一組。 此外,我希望能夠獲取沒有國家和申請日期的行(如ID = 15的行)。

預期的結果將是:

ID  Country  Application Date 
-------------------------------- 
12  Germany  01/01/2017 
13  Germany  01/02/2017 
14  Germany  01/02/2017 
15  
16  Greece  01/01/2017 
+0

有了這個樣本數據,預期的結果是什麼? – jarlh

+0

一般的GROUP BY規則說:「如果指定了GROUP BY子句,則SELECT列表中的每個列引用都必須標識分組列或作爲set函數的參數。」 – jarlh

回答

3

我認爲這是可能要

select t1.* from MyTable as t1 inner join 
(
SELECT ID, Max(Application Date) as Application Date 
FROM MyTable 
GROUP BY ID 
) as t2 on t1.Id=t2.ID and t1.Application Date=t2.Application Date 
+0

非常感謝,這非常有幫助!我意識到我的表的行數是不正確的,並且只是注意到有一些令人興奮的數據:(相同的ID,相同的國家,相同的申請日期)。感謝您的幫助! –

0

它可以在你的輸入數據並返回正確的輸出數據是什麼。請試試吧)

SELECT d.id, MyTable.country, d.datemax 
FROM (SELECT ID as id, Max(AppDate) as datemax 
FROM MyTable 
GROUP BY ID) as d 
,MyTable 
WHERE d.id = MyTable.id and datemax = MyTable.appdate 
OR (datemax is null and country is null)