如果此问题可能已在其他地方发布,请道歉,尽管我已经搜索过但无法找到答案。基本上我有下表(会有额外的行,但这些是主要的);
emp_id | Name
-------------
1 a
1
2 b
2
3 c
4 d
4
4
作为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语句作为列。但不确定它是如何工作的。另外需要注意的是,GROUP BY无法正常工作,因为我需要显示所有记录。
谢谢!
答案 0 :(得分:0)
如果未指定名称,请使用相关子查询。
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
答案 1 :(得分:0)
这样的东西可以起作用: Fiddle
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
AFAIK这适用于任何rdbms