我应该找到某个日期(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'