大神来支招,一条查询语句!该怎么解决
大神来支招,一条查询语句!!!!!!!
表结构如下
name time status
张三 2015-1-15 13:00:01 1
张三 2015-1-15 15:00:01 0
张三 2015-1-15 14:00:01 1
张三 2015-1-15 12:00:01 1
李四 2015-1-15 11:00:01 1
李四 2015-1-15 10:00:01 0
李四 2015-1-15 15:00:01 1
预期结果:每个name时间最近的一条记录
name time status
张三 2015-1-15 15:00:01 0
李四 2015-1-15 15:00:01 1
不能group by status 否则每个name会出现两条记录
求大神!
------解决思路----------------------
逻辑:按name分区,按time降序排序,然后去第一条记录:
Select name,time,status
from (
select row_number() over(partition by name order by time desc) as RN
,name,time,status
from TableA
) as t
where t.RN=1
------解决思路----------------------
with cte as(
select *,row_number() over(partition by name order by time desc) as cnt from tb_name
)
select * from cte where cnt=1
------解决思路----------------------
表结构如下
name time status
张三 2015-1-15 13:00:01 1
张三 2015-1-15 15:00:01 0
张三 2015-1-15 14:00:01 1
张三 2015-1-15 12:00:01 1
李四 2015-1-15 11:00:01 1
李四 2015-1-15 10:00:01 0
李四 2015-1-15 15:00:01 1
预期结果:每个name时间最近的一条记录
name time status
张三 2015-1-15 15:00:01 0
李四 2015-1-15 15:00:01 1
不能group by status 否则每个name会出现两条记录
求大神!
------解决思路----------------------
逻辑:按name分区,按time降序排序,然后去第一条记录:
Select name,time,status
from (
select row_number() over(partition by name order by time desc) as RN
,name,time,status
from TableA
) as t
where t.RN=1
------解决思路----------------------
with cte as(
select *,row_number() over(partition by name order by time desc) as cnt from tb_name
)
select * from cte where cnt=1
------解决思路----------------------
with a(name,time,status) as
(select '张三','2015-1-15 13:00:01',1 union all
select '张三','2015-1-15 15:00:01',0 union all
select '张三','2015-1-15 14:00:01',1 union all
select '张三','2015-1-15 12:00:01',1 union all
select '李四','2015-1-15 11:00:01',1 union all
select '李四','2015-1-15 10:00:01',0 union all
select '李四','2015-1-15 10:00:01',0)
select c.name,c.time,c.status from
(select ROW_NUMBER()over(partition by name order by time desc) as b,* from a) c
where c.B=1