如何创建一个基于两个或三个键对表的信息进行排名的列? 例如,在此表中,rank变量基于Department和Name:
Dep | Name | Rank
----+------+------
1 | Jeff | 1
1 | Jeff | 2
1 | Paul | 1
2 | Nick | 1
2 | Nick | 2
我找到this solution但是它在SQL中,我不认为它适用于我的情况,因为所有信息都在一个表中,并且响应似乎是SELECT和JOIN组合来自不同表的信息。 提前谢谢
答案 0 :(得分:1)
您可以计算当前组中当前行之前的行数:
UPDATE MyTable
SET Rank = (SELECT COUNT(*)
FROM MyTable AS T2
WHERE T2.Dep = MyTable.Dep
AND T2.Name = MyTable.Name
AND T2.rowid <= MyTable.rowid);
(rowid
列用于区分其他相同的行。如果您有主键,请使用主键。)