2017-05-29 99 views
0

嗨,我有一个表下面;重新索引重复行

ID length 
1 1050 
1 1000 
1 900 
1 600 
2 545 
2 434 
3 45 
3 7 
4 5 

我需要一个SQL代码,以使下面的表

ID IDK length 
1 1 1050 
1 2 1000 
1 3 900 
1 4 600 
2 1 545 
2 2 434 
3 1 45 
3 2 7 
4 1 5 

IDK是新的列,以根据长度的升序重新索引相同的ID。 非常感谢你

回答

2

这是MS Access的痛苦。下面是一个使用相关子查询的一种方式:

select t.*, 
     (select count(*) 
     from foo as t2 
     where t2.id = t.id and t2.length >= t.length 
     ) as idk 
from foo as t; 
+0

谢谢@Gordon Linoff我更改表名称为Foo 选择富*, (SELECT COUNT(*) 从富为t2 其中t2.id = t1.id和t2.length> = t1.length )作为idk 来自foo; 但所有的IDK结果是0 – Sero

+0

选择FOO。*, (SELECT COUNT(*) 从富为t2 其中t2.ID = foo.ID和t2.length> = foo.length )作为IDK 从FOO;代码正在工作。但我怎样才能在同一个ID内按照长度降序排列表格 – Sero