>我有这个表:
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 具有不同的网络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
尝试以下查询:
select RANK() OVER (PARTITION BY dep_id ORDER BY id) dept_num,
name,
dep_id,
age
from table
我们假设表的名称是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);
不确定更新是否有效。