我的桌子有以下记录。
SNO NAME TELNO
1 A 12345
2 A
3 A
4 B 78901
5 B
我需要telno 12345的select语句应显示为姓名为'A'的员工SNO(1,2,3)
对于行SNO(4,5)的名称为“B”的员工,应显示和telno no 78901。
示例输出
SNO NAME TELNO
1 A 12345
2 A 12345
3 A 12345
4 B 78901
5 B 78901
答案 0 :(得分:0)
一种方式是自我加入,假设名称是唯一的。你真的没有提供足够复杂的样本集。另一种方法是派生表。
declare @table table (SNO int, [NAME] char(1), TELNO int)
insert into @table
values
(1,'A',12345),
(2,'A',null),
(3,'A',null),
(4,'B',78901),
(5,'B',null)
select
a.SNO
,a.NAME
,b.TELNO
from @table a
inner join @table b on b.NAME = a.NAME
where b.TELNO is not null
select
a.SNO
,a.NAME
,b.TELNO
from @table a
left join (select name, max(TELNO) telno from @table group by name) b on b.NAME = a.NAME