【发布时间】:2011-06-07 20:39:40
【问题描述】:
如果我查询:
select max(date_created) date_created
在 PL/SQL (Oracle 11g) 中的日期字段上,并且有在同一日期但在不同时间创建的记录,Max() 仅返回该日期的最新时间。我想做的是忽略时间并返回与最大日期匹配的所有记录,而不管它们在该列中的相关时间戳如何。这样做的最佳做法是什么?
编辑:我要做的是返回符合我的条件的最近日期的所有记录,而不管当天的时间戳如何。以下是我现在正在做的事情,它只返回该日期最新日期和时间的记录。
SELECT r."ID",
r."DATE_CREATED"
FROM schema.survey_response r
JOIN
(SELECT S.CUSTOMERID ,
MAX (S.DATE_CREATED) date_created
FROM schema.SURVEY_RESPONSE s
WHERE S.CATEGORY IN ('Yellow', 'Blue','Green')
GROUP BY CUSTOMERID
) recs
ON R.CUSTOMERID = recs.CUSTOMERID
AND R.DATE_CREATED = recs.date_created
WHERE R.CATEGORY IN ('Yellow', 'Blue','Green')
最终编辑:通过下面的查询让它工作。
SELECT r."ID",
r."DATE_CREATED"
FROM schema.survey_response r
JOIN
(SELECT S.CUSTOMERID ,
MAX (trunc(S.DATE_CREATED)) date_created
FROM schema.SURVEY_RESPONSE s
WHERE S.CATEGORY IN ('Yellow', 'Blue','Green')
GROUP BY CUSTOMERID
) recs
ON R.CUSTOMERID = recs.CUSTOMERID
AND trunc(R.DATE_CREATED) = recs.date_created
WHERE R.CATEGORY IN ('Yellow', 'Blue','Green')
【问题讨论】:
-
WHAT 数据库 - WHICH 版本.....
-
MAX 只返回单个标量值(因此忽略日期时间字段的非日期部分是不相关的)。考虑更新帖子以提出真正的问题,例如“如何选择最近一天的所有记录?” (或者什么是合适的——这些知识也将导致更好的 SO 搜索,因为这个问题很“常见”。)
-
我很抱歉,更多信息是为了。这实际上是一个 PL/SQL 查询,是的,我需要选择最近一天的所有记录。这是针对 Oracle 11g 的。已添加标签。
标签: datetime plsql oracle11g max truncate