2014-02-05 68 views
0

我的表格包含以下列|id|incident_number|created_at|note|查找每个事件的最近时间戳

因此每个事件可以有很多更新,更新按ID分类,并以2014-01-30 21:11:56的形式给出created_at时间。所以一个incident_number可以有很多id和许多created_at's,这取决于它更新的频率。

我想要做的是过滤所有其他created_at的最新的一个通信时间。

错误在于,在运行查询时,我无法查看数据,并说出created_at是否小于此给定日期,因为我不确定这些事件何时发生。

大图是我能用最近的更新显示每个事件,排序的created_at日期。

有什么建议吗?

回答

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 
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。 GROUP BY子句中缺少列note。我没有看到子选择的必要性。

+0

这样的作品,但它不会让我展示等栏目,它只显示MAX(created_at) – Seal

+0

我也试图通过MAX(created_at),是行不通的排序,给出错误。 – Seal

+0

@ user2908778好的,我看到你需要更多的提示。我更新了答案。 – SebastianH