数据排除方面的有关问题,求指点
数据排除方面的问题,求指点。
例如:
NAME TIME STATUS
张三 2012-09-01 08:28:30 进
张三 2012-09-01 08:28:57 进
张三 2012-09-01 08:29:02 进
张三 2012-09-01 09:28:30 出
张三 2012-09-01 09:28:57 出
张三 2012-09-01 09:29:02 出
求指导,怎么能把相同状态的,比如都是进的,第一次的时间读取出来?
我想查出来的效果是:
NAME TIME STATUS
张三 2012-09-01 08:28:30 进
张三 2012-09-01 09:28:30 出
就是把最早的那次记录查询出来,不知道该怎么写好,新手。。。
------解决方案--------------------
例如:
NAME TIME STATUS
张三 2012-09-01 08:28:30 进
张三 2012-09-01 08:28:57 进
张三 2012-09-01 08:29:02 进
张三 2012-09-01 09:28:30 出
张三 2012-09-01 09:28:57 出
张三 2012-09-01 09:29:02 出
求指导,怎么能把相同状态的,比如都是进的,第一次的时间读取出来?
我想查出来的效果是:
NAME TIME STATUS
张三 2012-09-01 08:28:30 进
张三 2012-09-01 09:28:30 出
就是把最早的那次记录查询出来,不知道该怎么写好,新手。。。
------解决方案--------------------
- SQL code
if object_id('[tb]') is not null drop table [tb] go create table [tb]([NAME] varchar(4),[TIME] datetime,[STATUS] varchar(2)) insert [tb] select '张三','2012-09-01 08:28:30','进' union all select '张三','2012-09-01 08:28:57','进' union all select '张三','2012-09-01 08:29:02','进' union all select '张三','2012-09-01 09:28:30','出' union all select '张三','2012-09-01 09:28:57','出' union all select '张三','2012-09-01 09:29:02','出' go select * from tb t where not exists(select 1 from tb where name=t.name and status=t.status and time<t.time) /** NAME TIME STATUS ---- ----------------------- ------ 张三 2012-09-01 08:28:30.000 进 张三 2012-09-01 09:28:30.000 出 (2 行受影响) **/
------解决方案--------------------
如果你的表中字段只有这三个,那么使用以下语句就可以
- SQL code
select name,min(time) as time,status from tb group by name,status