我的表格包含以下列|id|incident_number|created_at|note|
。
因此,每个事件都可以包含许多更新,更新按ID进行分类,并以created_at
的形式提供2014-01-30 21:11:56
时间。因此,一个incident_number
可以有许多id和许多created_at,具体取决于它的更新频率。
我要做的是按照与时间对应的最新版本来过滤掉所有其他created_at
。
问题是,当运行查询时,我无法查看数据,并说出created_at是否小于此给定日期,因为我不确定这些事件何时被处理。
总体而言,我将能够在created_at
日期之前使用最新更新排序来显示每个事件。
有什么建议吗?
答案 0 :(得分:2)
我在你的问题中途丢了一点,但这可能会给你一个想法:
SELECT MAX(created_at) FROM ... GROUP BY incident_number
编辑:由于您的意见,我添加了此内容。
是,MAX仅返回最高值。我的发言是帮助您找到价值并根据您的需要添加其他价值。我想你需要的是:
SELECT MAX(created_at), incident_number, note FROM ... GROUP BY incident_number, note
对于每个事件,仅显示具有最新created_at时间戳的行。
EDIT2:正如您提到的一个错误,我检查了我的SQL。 note
子句中缺少列GROUP BY
。我没有看到子选择的必要性。
答案 1 :(得分:0)
好的,我最不得不做的是为created_at列创建一个子查询。最终查询看起来像......
SELECT Top 1
wn.id, wn.incident_number, wn.created_at, note
FROM
sn_incident_work_note wn
Where
wn.incident_number = 'INC0005607474'
and wn.created_at = (Select MAX(iwn.created_at)
from sn_incident_work_note iwn
where iwn.incident_number = wn.incident_number)
Order By id DESC