代码之家  ›  专栏  ›  技术社区  ›  Ram

行中重复值

  •  1
  • Ram  · 技术社区  · 7 年前

    我的桌子有以下记录。

    SNO NAME TELNO
    1   A    12345
    2   A     
    3   A   
    4   B    78901
    5   B    
    

    我需要为sno(1,2,3)行中名为“a”的雇员显示telno为12345的select语句

    对于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
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   S3S    7 年前

    一种方法是假设名称是唯一的自连接。你真的没有给出足够复杂的样本集。另一种方法是派生表。

    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