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

时间:2018-10-22 14:07:39

标签: sql oracle

我有这张桌子:

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

2 个答案:

答案 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是否有效。