MAX(日期),GROUPBY,WHERE

时间:2016-11-08 15:24:56

标签: sql greatest-n-per-group

我有3列,

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

基本上,我想要表格中的最后一个日期,以及名称和状态。

我正在寻找每行的最大日期。有重复的公司名称。如果两行是相同的公司,并且每个行都有不同的日期,我希望最大日期以及该行中该公司的其余信息。

谢谢

3 个答案:

答案 0 :(得分: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')

答案 1 :(得分:0)

您可以尝试以下操作:

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

答案 2 :(得分: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;

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

请注意,某些数据库会将fetch first 1 row only拼写为limitselect top