SQL语句:请按此规则帮我写Sql语句

来源:百度知道 编辑:UC知道 时间:2024/09/23 14:37:44
表Person 有两字段:id_no (varchar) , in_date (datetime)

功能:把in_date 相同的记录的in_date依次累加1秒,使in_date没有相同的记录

如原数据:
id_no in_date
001 2008-1-1 2:10:20
002 2008-1-1 2:10:20
003 2008-1-1 2:10:20
004 2008-1-2 2:15:35
005 2008-1-2 2:15:35
006 2008-1-2 2:20:20

处理后数据:
id_no in_date
001 2008-1-1 2:10:20
002 2008-1-1 2:10:21
003 2008-1-1 2:10:22
004 2008-1-2 2:15:35
005 2008-1-2 2:15:36
006 2008-1-2 2:20:20

谁帮我写条这样的SQL语句。 谢谢啊!!

--查看效果
select id_no,dateadd(ss,(select count(*) from Person where in_date=a.in_date and id_no<a.id_no),in_date)
from Person a

--如果需要更新,则语句为
update Person
set in_date=dateadd(ss,(select count(*) from Person where in_date=a.in_date and id_no<a.id_no),in_date)
from Person a

另外由于in_date是datetime类型的,有可能直接select 出的值相同,但毫秒数不同,比如
2007-01-01 10:00:00.012和2007-01-01 10:00:00.110
这两个时间在企业管理器看值都一样,但直接按时间分组的话,这两个就是不同的时间了,如果你不确定毫秒位是否相同,可以把in_date转换一下
select id_no,dateadd(ss,(select count(*) from Person where convert(varchar(30),in_date,20)=convert(varchar(30),a.in_date,20) and id_no<a.id_no),in_date)
from Person a
这样2007-01-01 10:00:00.012和2007-01-01 10:00:00.110就可以认为是相同的时间了。

一条语句不好办

多条是可以的。