我正在尝试从数据库表中提取每日ID的最新条目,其中数据库使用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
(注意:Id包含位置作为其字符串的一部分)
问题是较少的最近时间(即不需要的数据)也包含在查询的输出中。我该如何解决这个问题?
答案 0 :(得分:0)
问题在于GROUP BY基于Id,它是一个字段,数据库中的每个值都是唯一的。当我替换
时出现了正确的结果group by x.Id
与
group by substring(x.Id, 1, datalength(x.Id) - datalength(x.TimeAndAction))