如何在选择结果中添加新列(不存在)?



>我有这个表:

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);

不确定更新是否有效。

最新更新