如何在附加条件下查询SQL中的最新记录



我应该找到某个日期(2014-10-01)的所有活动vm_id,重要的是,我应该只达到每个vm_id的最新记录。

日期,操作,vm_id,vm_status
22014-09-0108:13:00,创建,vm-4058,活动
2014-09-0410:13:00,创建,vm-4059,活动
2014-09-0817:13:00,删除,vm-4059,取消
2014-09-3009:13:00,创建,vm-4057,活动
2014-09-3015:13:00,修改,vm-4057,激活
2014-10-2308:13:00,删除,vm-4057,取消

我想获取2014-10-01所有活跃订阅的最新记录:

2014-09-01 08:13:00,创建,vm-4058,活动
22014-09-3015:13:00,修改,vm-4057,激活

有人知道怎么去那里吗?

-试试这个

从[tablename]中选择Max(date)作为日期,Max(action)作为操作,vm_id,Max(vm_status)

其中vm_status='active'且vm_id不在(从[tablename]中选择vm_id,其中vm_sttatus='cancelled')

按vn_id 分组

以下是想法。查找最新日期,然后查找记录并确定它是否处于活动状态。

select t.*
from table t join
     (select vm_id, max(date) as maxdate
      from table t
      group by vm_id
     ) tt
     on t.vm_id = tt.vm_id and t.date = tt.maxdate
where t.status = 'active';

我的两分钱,在约会之前获得最新和最棒的,并确保它不是删除。与其他一些答案的想法相同,只是另一种方法。

从中选择日期、操作、vm_id、vm_status

(SELECT  *,
        ROW_NUMBER() OVER
        (
                PARTITION BY  A.vm_id
                ORDER BY      A.date DESC
        ) AS seq
FROM tablename where date < '2014/10/01') b
where seq = 1 and vm_status <> 'Deletion'

最新更新