多列比较/排序
select * from f()
结果如下:
id sss qqq
01 1.2 1
02 1 0
03 1.2 0.5
04 1.2 0.5
.. ... ...
希望得到如下结果:
id sss qqq seq
01 1.2 1 1
02 1 0 4
03 1.2 0.5 2
04 1.2 0.5 2
...
先比较SSS的大小,如果相同再比较QQQ的值,排序.
如果都相同,就并列.
空出占用的号码
------解决方案--------------------另外一种方法:
declare @t table(id int,sss decimal(5,2),qqq decimal(5,2))
insert @t
select '01 ', 1.2, 1 union all
select '02 ', 1, 0 union all
select '03 ', 1.2, 0.5 union all
select '04 ', 1.2, 0.5
SELECT *,
seq = (select count(*) + 1 from @t where sss > a.sss or(sss = a.sss and qqq > a.qqq))
FROM @t AS a
/*结果
id sss qqq seq
----------- ------- ------- -----------
1 1.20 1.00 1
2 1.00 .00 4
3 1.20 .50 2
4 1.20 .50 2
*/