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