是否可以从同一个最近的日期查询多个记录

时间:2018-06-14 15:15:41

标签: sql

我有一个返回以下结果的查询

Date        Type          
6/7/18      R104            
6/7/18      Sunset         
6/7/18      Rabbit-T          
6/7/18      Sunset         
6/8/18      R104            
6/8/18      S400           
6/9/18      Singer        
6/9/18      Sunset          
6/9/18      Rabbit-M      
6/9/18      Sunset         
6/9/18      Sunset         

是否可以仅从最近的日期(此处为6/9/18)提取记录,而不管记录是什么?

这是我的查询

 SELECT   
 ot.sale_date AS "Sale Date"  
 , otr.type_33 AS "Type"  
 , ide.s_style AS "Style"  
 , att.att_color AS "Color"  



FROM 
SYSTEM.order_tracking as ot
LEFT OUTER JOIN SYSTEM.order_type as otr
on ot.clientID=otr.clientID and ot.salesperiod=otr.salesperiod and 
ot.CUSTHBDT_UID=otr.CUSTHBDT_UID
LEFT OUTER JOIN SYSTEM.item_descriptions_East as ide 
on otr.clientID=ide.clientID and otr.salesperiod=ide.salesperiod and 
otr.CUSTHBDU_UID=ide.CUSTHBDU_UID
LEFT OUTER JOIN SYSTEM.attributes as att 
on ide.clientID=att.clientID and ide.salesperiod=att.salesperiod and 
 ide.CUSTHBDV_UID=att.CUSTHBDV_UID



WHERE
ot.access_code = '1'

3 个答案:

答案 0 :(得分:3)

您可以使用子查询来过滤表

中可用的最新日期记录
select *
from table
where date = (select max(date) from table)

请记住在table(date)上设置索引以加快检索速度。

这应该适用于大多数DBMS,即使是那些不支持的DBMS:

  • 分析函数,如rank()
  • TOP n WITH TIES

答案 1 :(得分:0)

如果您的数据库支持RANK,那么您可以尝试:

SELECT Date, Type
FROM
(
    SELECT *, RANK() OVER (ORDER BY Date DESC) rank
    FROM yourTable
) t
WHERE rank = 1;

此选项可为您提供一些灵活性,以防您需要打破关系。在这种情况下,您可以简单地为ORDER BY使用的RANK子句添加另一级别的排序。

答案 2 :(得分:0)

我结束了

WHERE   
having date=max(date)  

这就是诀窍