基于其他行填充SQL列

基于其他行填充SQL列,sql,Sql,抱歉,如果这个问题可能已经张贴在其他地方,虽然我已经搜索,无法找到答案。基本上我有下表(会有额外的行,但这些是主要的) 作为select语句的一部分,我需要添加一个填充名称的附加列,即使在名称列中没有提到它 emp_id | Name | SortList ------------------------ 1 a a 1 a 2 b b 2 b 3 c

抱歉,如果这个问题可能已经张贴在其他地方,虽然我已经搜索,无法找到答案。基本上我有下表(会有额外的行,但这些是主要的)

作为select语句的一部分,我需要添加一个填充名称的附加列,即使在名称列中没有提到它

emp_id | Name | SortList
------------------------
  1       a        a
  1                a
  2       b        b
  2                b
  3       c        c
  4       d        d
  4       d        d
我觉得我可能需要做另一个select语句作为列。但不确定它将如何工作。还需要注意的是,分组方式不起作用,因为我需要显示所有记录


谢谢

如果未指定名称,则使用相关子查询查找名称

select emp_id, Name, coalesce(name, (select min(Name) from tablename t2
                                     where t1.emp_id = t2.emp_id)) as SortList
from tablename t1
请注意,即使emp_id在不同的行上有不同的名称,这也会起作用

或者,执行自联接:

select t1.emp_id, t2.Name, t2.Name as SortList
from tablename t1
  join (select emp_id, Name from tablename
        where name is not null) t2 on t1.emp_id = t2.emp_id

类似这样的方法可能会奏效:


A好的,这应该适用于任何rdbms

您使用的是哪种DBMS?博士后?甲骨文?谢谢!联合解决方案正是我所追求的,尤其是它在处理不同的名称时更加健壮。看起来我有一些关于这个函数的阅读!我不知道,抱歉,在过去的几周里,我写了很多jquery和php,它在小提琴上工作,所以我只是假设它在任何RDMB中都能工作,编辑它
select t1.emp_id, t2.Name, t2.Name as SortList
from tablename t1
  join (select emp_id, Name from tablename
        where name is not null) t2 on t1.emp_id = t2.emp_id
SELECT t1.emp_id, t1.name, t2.name as "Sortlist"
FROM mytable t1
join 
(SELECT name, emp_id
 from mytable
 where name is not null) t2
ON t1.emp_id = t2.emp_id