求教:怎样用一条SQL语句找出二义的记录,非重复记录?
表结构: 
 create         table         gprsdata         (i_datetime         char(12),   i_lon   char(10),   i_lat   char(10))     
 典型数据: 
          	I_DATETIME	I_LON	I_LAT 
 1	070124080000	113.024662	23.094220 
 2	070124080000	113.190848	23.121777 
 3	070124080000	113.190852	23.121882 
 4	070124111551	113.024862	23.093942 
 5	070124111551	113.024862	23.093942 
 6	070124121003	113.024823	23.093927 
 7	070124121003	113.024823	23.093927 
 ... 
 135	070125075253	113.190773	23.121885 
 136	070125075253	113.190773	23.121885 
 137	070125080000	113.294662	23.141098 
 138	070125080000	113.294662	23.141098 
 139	070125080000	113.024597	23.094357 
 140	070125080253	113.190773	23.121885 
 141	070125080253	113.190773	23.121885 
 ...     
 其中1~3这三条记录的经纬度数据   i_lon/i_lat   都不相同,存在二义性。 
 137~139这三条记录也是同样存在二义性。但要注意,它只有两条记录不同。 
 而其他记录只是重复,并无二义性,应该剔出。     
 问题(1).我希望将所有带二义性的记录找出来,如: 
          	I_DATETIME	I_LON	I_LAT 
 1	070124080000	113.024662	23.094220 
 2	070124080000	113.190848	23.121777 
 3	070124080000	113.190852	23.121882 
 4	070125080000	113.294662	23.141098 
 5	070125080000	113.294662	23.141098 
 6	070125080000	113.024597	23.094357 
 7	070127080000	   84.067998	31.296920 
 8	070127080000	113.178737	23.114500 
 9	070127080000	113.178733	23.114515 
 10	070130080000	113.294910	23.141598 
 11	070130080000	113.256192	23.134617     
 问题(2).我还希望能对这些二义性记录进行统计分析(注意070125080000虽然有三条,但有一条重复,所以算成2),如: 
          	I_DATETIME	COUNT(*) 
 1	070124080000	3 
 2	070125080000	2 
 3	070127080000	3 
 4	070130080000	2 
 5	070202080000	2 
 6	070203080000	2 
 7	070205080000	5 
 ...     
 我现在利用视图勉强解决了这个问题,但不够方便。   
 1、创建不包括重复项的视图: 
 create      or   replace   view   CheckPoint   as 
 	select   DISTINCT   i_datetime,   i_lon,   i_lat   from   gprsdata   where   i_datetime> = '070101000000 '   order   by   i_datetime   ASC   
 2、对二义记录进行统计: 
 select   i_datetime,count(*)   from   CheckPoint   group   by   i_datetime      having   count(*)> 1   
 3、找出二义记录 
 select   *   from   gprsdata   where   i_dateTime   in 
 	(select   i_datetime   from   CheckPoint   group   by   i_datetime      having   count(*)> 1) 
 	order   by   i_datetime   ASC   
 4、删除视图: 
 drop   view   CheckPoint     
 能不能只用一条SQL语句就完成这样的查询。而且最好是标准的SQL,非Oracle也能用。 
------解决方案--------------------其实你自己已经解决了,把1和3合一下,再写个子查询就行了 
------解决方案--------------------select * from gprsdata a 
 where a.rowid >  ( 
 select min(b.rowid) from gprsdata  b 
 where a.i_lon = b.i_lon 
 and ... 
 )    
 根据需要构建括号里面的where就可以了
------解决方案--------------------重复纪录和二义记录 
 有什么区别啊? 
 难道不一样!问题1已经解决了吧!
------解决方案--------------------select i_datetime,count(*)  
 from (select distinct i_datetime,i_lon,i_lat from gprsdata)    
 group by i_datetime 
 having count(*)> 1   
 先用distinct去掉重复纪录,再统计i_datetime相同,i_lon/i_lat 不同的记录条数 
 大于1就是二义记录,已统计   
 你再 
 select * from gprsdata 
 where exists(select i_datetime,count(*)  
 from (select distinct i_datetime,i_lon,i_lat fr