如何在postgreSQL中获取最近的日期?

时间:2015-08-06 11:06:53

标签: postgresql

guaccountid有3个不同的guorderid值和不同的enddate。对于特定的enddate,我只需要获取最新的guorderid guaccountid

select guaccountid,guorderid,enddate
from ord_entitlement
where guaccountid ='15031021282118408'
ORDER BY enddate DESC 

see the out put for my query

1 个答案:

答案 0 :(得分:1)

我会使用row_number()窗口函数:

SELECT   
  guaccountid, 
  guorderid,
  enddate
FROM (
  SELECT
    guaccountid, 
    guorderid,
    enddate, 
    row_number() over (
      partition by guaccountid 
      order by to_timestamp(enddate, 'YYYY-MM-DD"T"HH24:MI:SS') desc
    ) r
  FROM ord_entitlement
  WHERE guaccountid = '15031021282118408'
    AND substr(enddate, 1, 4) != '9999'
  ) src
WHERE r = 1;

这将返回:

|       guaccountid |         guorderid |            enddate |
|-------------------|-------------------|--------------------|
| 15031021282118408 | 15031708485830901 | 2015-04-16T08:42:1 |

如果您从guaccountid = '15031021282118408'条款中删除where,您将获得任何guaccountid的最新记录。

Sample SQL Fiddle