我应该在特定日期(2014-10-01)找到所有有效的vm_id,重要的是我应该只达到每个vm_id的最新记录。
date,action,vm_id,vm_status
2014-09-01 08:13:00,Creation,vm-4058,active 2014-09-04 10:13:00,Creation,vm-4059,active
2014-09-08 17:13:00,删除,vm-4059,取消
2014-09-30 09:13:00,Creation,vm-4057,活跃
2014-09-30 15:13:00,修改,vm-4057,活动
2014-10-23 08:13:00,删除,VM-4057,取消
我想在2014-10-01获取所有有效订阅的最新记录:
2014-09-01 08:13:00,Creation,vm-4058,active
2014-09-30 15:13:00,改性,VM-4057,活性
有谁知道如何到达那里?
答案 0 :(得分:0)
- 试试这个
选择Max(date)作为日期,max(action)作为action,vm_id,Max(vm_status)来自[tablename]
其中vm_status ='有效'和vm_id不在(从[tablename]中选择vm_id,其中vm_status ='取消')
按vn_id分组
答案 1 :(得分:0)
这是个主意。找到最新日期,然后找到记录并确定它是否有效。
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';
答案 2 :(得分:0)
我的两分钱,在你约会之前得到最新最好的,并确保它不是删除。和其他一些答案一样,只是另一种方法。
从
中选择日期,操作,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'