我有这张桌子:
name dep_id age
admin 1 22
admin2 1 23
admi 2 24
ad 2 22
aa 2 23
我想返回一个包含名为“ dep_num”的新列的结果,并且该列在主表中不存在,并且其计数相同的dep_id,这意味着admin和admin2具有相同的dep_id,因此其包含1,2和那么admi的deepnet dep_id就不同了,所以它从第一个1开始计数,所以..这样的结果:
dep_num name dep_id age
1 admin 1 22
2 admin2 1 23
1 admi 2 24
2 ad 2 22
3 aa 2 23
答案 0 :(得分:1)
请尝试以下查询:
select RANK() OVER (PARTITION BY dep_id ORDER BY id) dept_num,
name,
dep_id,
age
from table
答案 1 :(得分:0)
让我们假设表的名称为table_deps
:
alter table table_deps
add (dep_num int default 0);
update table_deps d
set dep_num = 1 + (select count(*)
from table_deps p
where p.dep_id = d.dep_id
and p.name < d.name);
不确定UPDATE是否有效。