表格如下:
id num1 num2 date name
01 2 1.3 9-1 as
02 1 -1 9-2 ss
03 1 -1 9-2 ss
04 1 -0.5 9-2 ss
.. .. .. ... ..
num1是正整数,NUM2是实数(包括负数),
希望分别按照num1升序,num2降序,date升序,name降序的顺序编号,重复排名保留名次seq num1 num2 date name id
1 1 -0.5 9-2 ss 04
2 1 -1 9-2 ss 02
2 1 -1 9-2 ss 03
4 2 1.3 9-1 as 01
id num1 num2 date name
01 2 1.3 9-1 as
02 1 -1 9-2 ss
03 1 -1 9-2 ss
04 1 -0.5 9-2 ss
.. .. .. ... ..
num1是正整数,NUM2是实数(包括负数),
希望分别按照num1升序,num2降序,date升序,name降序的顺序编号,重复排名保留名次seq num1 num2 date name id
1 1 -0.5 9-2 ss 04
2 1 -1 9-2 ss 02
2 1 -1 9-2 ss 03
4 2 1.3 9-1 as 01
解决方案 »
- 关于Opera和Google Chorm
- sql xml简单的问题
- 请问怎么样通过程序的方式向MSSQL的字段中写入一个NULL呢,而不是一个空格?
- sqlserver中想用in判断范围,但只能输入一个字符串参数,如何拆字符串然后动态拼in()里面的内容呢?
- 简单数据汇总问题!!求sql语句。。
- sql2000除维护计划外,可以通过写程序来实现数据备份吗?
- 高分请教一个sql语句的写法,在线等待
- 请问大虾,怎样更改数据库所有者!或表的所有者!
- 谁成功地安装过sql server2000开发版?怎么会提示“指定的实例无效”
- 将datetime 列更新为time列应该怎么做?
- 请教有没有比这更好的SQL语句?有空进来看看
- 分割字符
seq
1
2
2
4
from
t
order by seq asc ,num1 asc,num2 asc ,date asc,name desc
order by num1,num2 desc,data,name desc
declare @t table(ID int,num1 int,num2 float,date char(10),name char(10))
insert into @t select 01,2,1.3,'09-01','as'
insert into @t select 02,1,-1,'09-02','ss'
insert into @t select 03,1,-1,'09-01','as'
insert into @t select 03,1,-1,'09-01','ss'
insert into @t select 04,1,-0.5,'09-02','ss'
select * from @t
select * from @t order by num1 asc,num2 desc,date asc ,name desc
/*
ID num1 num2 date name
----------- ----------- ---------------------- ---------- ----------
1 2 1.3 09-01 as
2 1 -1 09-02 ss
3 1 -1 09-01 as
3 1 -1 09-01 ss
4 1 -0.5 09-02 ss (5 row(s) affected)ID num1 num2 date name
----------- ----------- ---------------------- ---------- ----------
4 1 -0.5 09-02 ss
3 1 -1 09-01 ss
3 1 -1 09-01 as
2 1 -1 09-02 ss
1 2 1.3 09-01 as (5 row(s) affected)
*/
declare @t table(ID int,num1 int,num2 float,date char(10),name char(10))
insert into @t select 01,2,1.3,'09-01','as'
insert into @t select 02,1,-1,'09-02','ss'
insert into @t select 03,1,-1,'09-01','as'
insert into @t select 03,1,-1,'09-01','ss'
insert into @t select 04,1,-0.5,'09-02','ss'
select * from @t
select * from @t order by num1 asc,num2 desc,date asc ,name desc
/*
ID num1 num2 date name
----------- ----------- ---------------------- ---------- ----------
1 2 1.3 09-01 as
2 1 -1 09-02 ss
3 1 -1 09-01 as
3 1 -1 09-01 ss
4 1 -0.5 09-02 ss (5 row(s) affected)ID num1 num2 date name
----------- ----------- ---------------------- ---------- ----------
4 1 -0.5 09-02 ss
3 1 -1 09-01 ss
3 1 -1 09-01 as
2 1 -1 09-02 ss
1 2 1.3 09-01 as (5 row(s) affected)
*/
ID VARCHAR(20),
num1 INT,
num2 DECIMAL(10,2),
date VARCHAR(20),
Name VARCHAR(20)
)INSERT INTO @t
SELECT '01',2,1.3,'9-1','as' UNION ALL
SELECT '02',1,-1,'9-2','ss' UNION ALL
SELECT '03',1,-1,'9-2','ss' UNION ALL
SELECT '04',1,-0.5,'9-2','ss'
SELECT TOP 100 seq = IDENTITY(INT,1,1),* INTO # FROM @t ORDER BY NUM1,NUM2 DESC,DATE, NAME DESC, IDSELECT seq = (SELECT MIN(seq) FROM # A WHERE A.num1 = B.num1 AND A.num2 = B.num2 AND A.date = B.date),num1,num2,date,name,id
FROM # B
DROP TABLE #seq num1 num2 date name id
----------- ----------- ------------ -------------------- -------------------- --------------------
1 1 -.50 9-2 ss 04
2 1 -1.00 9-2 ss 02
2 1 -1.00 9-2 ss 03
4 2 1.30 9-1 as 01(所影响的行数为 4 行)