我现在做的一个项目想实现一个这样的功能:
一个mathinfo表中有这样的几个字段:empid,flag,state,datetime.其中empid来自另外一个表的字段。
mathinfo表的数据可以重复的。
我现在要做的是。除去一天内(datetime字段)最早的一条数据。
然后从剩余的其他数据中。筛选出empid,flag都相同的信息,并标记为重复字段。
也就是select*,bz=0,1 from mathinfo这样的。。
请教各位大侠,小弟有急用!
一个mathinfo表中有这样的几个字段:empid,flag,state,datetime.其中empid来自另外一个表的字段。
mathinfo表的数据可以重复的。
我现在要做的是。除去一天内(datetime字段)最早的一条数据。
然后从剩余的其他数据中。筛选出empid,flag都相同的信息,并标记为重复字段。
也就是select*,bz=0,1 from mathinfo这样的。。
请教各位大侠,小弟有急用!
bz=(case when count(*)>1 then '重复' else '不重复' end)
from mathinfo
where datetime<>(select min(datetime) from mathinfo)
group by empid,flag
declare @t table(empid int,flag int,state varchar(50),[datetime] datetime)
insert into @t
select 1,1,'s','2009-10-27 22:19:26.983'
union all select 1,1,'s','2009-10-27 22:19:26.983'
union all select 1,1,'s','2009-10-27 22:19:27.983'
union all select 1,1,'s','2009-10-27 22:19:28.983'
union all select 2,1,'s','2009-10-28 22:19:26.983'
union all select 2,5,'s','2009-10-28 22:19:27.983'
union all select 2,1,'s','2009-10-28 22:19:28.983'
union all select 3,1,'s','2009-10-29 22:19:26.983'
union all select 3,6,'s','2009-10-29 22:19:27.983'
union all select 3,5,'s','2009-10-30 22:19:26.983'
union all select 3,1,'s','2009-10-30 22:19:27.983'
select *,bz=case when exists(select 1 from @t where empid = a.empid and flag = a.flag and [datetime]<>a.[datetime]) then 1 else 0 end
from @t a
where not exists
(select 1 from @t where a.[datetime] in (select min([datetime]) from @t group by convert(varchar(10),[datetime],120)))
empid falg bz
1 1 重复
2 1 重复
3 1 重复
2 5 不重复
3 5 不重复
3 6 不重复