Я пытаюсь извлечь последнюю запись по идентификатору за день из таблицы базы данных, в которой база данных находится в Sybase SQL, а язык отчета, на котором написан запрос, - Oracle SQL. Я попытался смоделировать запрос после кода SQL, размещенного в другом месте на этом сайте, но он извлекает другие значения даты и времени, кроме max(). Я подозреваю, что причина в том, что некоторые поля, которые я использую, получены путем преобразования или обработки строк.
Вот запрос:
Select
substring(x.Id, 1, datalength(x.Id) - datalength(x.TimeAndAction)) as 'Identification',
x.City,
x.Date,
max (Convert(Varchar(15), x.UTCTime, 108)) as 'MaxTime'
from db_table x
where x.Date >= 20140401
and x.Date <= 20140403
and x.City in ('LONDON', 'NEW_YORK', 'SHANGHAI', 'TOKYO')
group by x.Id, x.City, x.Date
(ПРИМЕЧАНИЕ: идентификатор содержит местоположение как часть строки)
Проблема в том, что в вывод запроса также включаются более ранние времена (т. е. нежелательные данные). Как я могу это исправить?