一个存储过程
用的是SQL SERVER2K
现在有一张表,
大概字段
id(自增长), SNumber(站号, 001, 002, etc.), SName(站名),GTime(datetime,获取测站数据时间),Level(float, 测站数据)
现在大概有7,80个站, 每隔6分钟就会同时向数据库里添加一条记录.
现在想实现把同一天内相同时间过来的数据先按照SNumber排列, 再按gtime倒序排列,然后对数据重新编号(1,2,3,etc) 请问如何实现?
例如原始记录
id snumber sname gtime level
66 023 测站1 2009-12-17 10:00:00 50.12
65 058 测站2 2009-12-17 10:00:00 30.24
64 018 测站3 2009-12-17 10:00:00 83.01
63 018 测站3 2009-12-17 09:54:00 50.12
62 058 测站2 2009-12-17 09:54:00 30.24
61 023 测站1 2009-12-17 09:54:00 83.01
按照要求排序后结果为
newid snumber sname gtime level
1 018 测站3 2009-12-17 10:00:00 83.01
2 023 测站1 2009-12-17 10:00:00 50.12
3 058 测站2 2009-12-17 10:00:00 30.24
1 018 测站3 2009-12-17 09:54:00 83.01
2 023 测站1 2009-12-17 09:54:00 50.12
3 058 测站2 2009-12-17 09:54:00 30.24
正解:
CREATE TABLE taoistong (id int identity(1,1) ,snumber char(3) ,sname nvarchar(4) ,gtime smalldatetime ,level float ) INSERT INTO taoistong SELECT '023', N'测站1', '2009-12-17 10:00:00', 50.12 INSERT INTO taoistong SELECT '058', N'测站2', '2009-12-17 10:00:00', 30.24 INSERT INTO taoistong SELECT '018', N'测站3', '2009-12-17 10:00:00', 83.01 INSERT INTO taoistong SELECT '018', N'测站3', '2009-12-17 09:54:00', 50.12 INSERT INTO taoistong SELECT '058', N'测站2', '2009-12-17 09:54:00', 30.24 INSERT INTO taoistong SELECT '023', N'测站1', '2009-12-17 09:54:00', 83.01 SELECT (SELECT count(1) FROM taoistong b WHERE a.gtime=b.gtime AND a.snumber>=b.snumber) ,snumber,sname,gtime,level FROM taoistong a ORDER BY gtime DESC,snumber
了解!!