Если я запрашиваю:
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')