2016-11-08 173 views
0

我有3列,MAX(日期),GROUPBY,與在

Firm_Name 
Firm_Status 
Firm_Date 

表名稱:測試

我不知道爲什麼,這似乎好好嘗試一下工作,

Select Firm_Name, Firm_Status, Max(Firm_Date) 
From Test 
WHERE 
Firm_Status = 'Incorporated' 
GROUP BY Firm_Name, Firm_Status 

本質上,我想要表中的最後一個日期,以及名稱和狀態。

我正在尋找每行最大日期。有重複的公司名稱。如果兩行是同一家公司,並且每個行都有不同的日期,那麼我需要最大日期以及該行在該行的其餘信息。

謝謝

+2

你是什麼意思「*似乎沒有工作*?」表中的「* last *」日期是什麼意思?你只是在尋找一個單一的記錄?什麼是您的DBMS(SQL Server,MySQL,Oracle等)?你能提供一些樣本數據和期望的結果嗎? – Siyual

+0

在這裏看到很多例子:http://stackoverflow.com/questions/tagged/greatest-n-per-group+sql –

+0

對不起,不,我正在尋找每行最大日期。有重複的公司名稱。如果兩行是同一家公司,並且每個行都有不同的日期,那麼我需要最大日期以及該行在該行的其餘信息。 – ssidenable

回答

1

簡單,非常便於攜帶方式:

Select Firm_Name, Firm_Status, Firm_Date 
From Test 
WHERE Firm_Status = 'Incorporated' 
    and Firm_Date = (select Max(Firm_Date) from test 
        WHERE Firm_Status = 'Incorporated') 
+0

剛剛注意。已編輯。 – jarlh

+0

對不起,我應該解釋我在找什麼。我爲我的帖子添加了修改。 – ssidenable

0

你可以嘗試以下方法:

SELECT Firm_Name, Firm_Status, Firm_Date 
    FROM Test 
    WHERE Firm_Date = (SELECT MAX(Firm_Date) FROM Test WHERE Firm_Status = 'Incorporated') 
0

如果你想在表格的最後日期,那麼最簡單的方法是fetch first 1 row onlyorder by

Select Firm_Name, Firm_Status, Firm_Date 
From Test 
where Firm_Status = 'Incorporated' 
order by firm_date desc 
fetch first 1 row only; 

A group by是不必要的,甚至分散注意力。

請注意,某些數據庫拼寫爲fetch first 1 row onlylimitselect top