我现在做的一个项目想实现一个这样的功能:
一个mathinfo表中有这样的几个字段:empid,flag,state,datetime.其中empid来自另外一个表的字段。
mathinfo表的数据可以重复的。
我现在要做的是。除去一天内(datetime字段)最早的一条数据。
然后从剩余的其他数据中。筛选出empid,flag都相同的信息,并标记为重复字段。
也就是select*,bz=0,1 from mathinfo这样的。。
请教各位大侠,小弟有急用! 

解决方案 »

  1.   

    select empid,flag,
    bz=(case when count(*)>1 then '重复' else '不重复' end) 
    from mathinfo
    where datetime<>(select min(datetime) from mathinfo)
    group by empid,flag
      

  2.   


    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)))
      

  3.   

    我刚才又看了下,第一个老兄的好像有点错。。结果是这的:
    empid falg bz
    1      1   重复
    2      1   重复
    3      1   重复
    2      5   不重复 
    3      5   不重复
    3      6   不重复
      
      

  4.   

    我想要显示所有的数据,而不是group by ..