我有一个返回以下结果的查询
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'
答案 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)
这就是诀窍