我需要一些帮助的查询 - 我用火鸟2.1

我有一个表所示:

RowID (primary key) | ActivityID | Duration | BilledAt

1 | 1 | 50 | 06.08.2010, 14:05:00.598
2 | 1 | 70 | 06.08.2010, 14:05:00.608
3 | 2 | 30 | 06.08.2010, 14:05:00.598
4 | 3 | 40 | 06.08.2010, 14:05:00.598
5 | 3 | 50 | 06.08.2010, 14:05:00.608

我想获得持续时间为每个ActivityID但如果有可以用同ActivityID不止一个项目,我需要得到具有最高BilledAt值。 (最新的条目)

如果我执行:

SELECT ActivityID, Max(BilledAt) 
FROM BilledTime 
GROUP BY ActivityID;

我会得到什么,我想没有时间值。如果我包括GROUP BY子句持续时间列,那么多个ActivityIDs被选择。

有一种优雅的解决这个?

谢谢!

有帮助吗?

解决方案

不熟悉火鸟所以语法可能是错误的,但这应该工作:

SELECT a.ActivityID, a.Duration, a.BilledAt
FROM BilledTime a
LEFT JOIN BilledTime b on a.ActivityID = b.ActivityID AND b.BilledAt > a.BilledAt
WHERE b.ActivityID IS NULL

或者,也可以使用更直观的WHERE NOT EXISTS子查询,而不是LEFT JOIN,但相信上述最终被更快。

其他提示

我会做这样的

SELECT a.ActivityID, a.Duration, a.BilledAt 
FROM BilledTime a 
WHERE a.BilledAt = (select max(b.billedAt) from BilledTime b where b.ActivityId = a.ActivityID)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top