A表
ID  姓名   类型
1   小张   业务员
2   小李   业务员
3   小王   话务员
4   小陈   话务员B表
客户名称   业务员   话务员
1001        1         4
1002        2         3
1003        2         4
1004        1         3我最终是想要把B表的业务员ID和话务员ID显示A表中对应的姓名,sql应该怎么写呢

解决方案 »

  1.   


    select b.客户名称,(case when c.类型 = N'业务员' then c.姓名 else '' end) as 业务员,
                     (case when d.类型 = N'话务员' then d.姓名 else '' end) as 话务员
    from b left join a c on b.业务员 = b.id
           left join a d on b.话务员 = b.id
      

  2.   

    select c.客户名称,c.姓名,a.姓名 from
    ( select b.客户名称, a.姓名 , b.话务员 from a , b where a.id = b.业务员) c
    where a.id = c. 话务员
      

  3.   

    select
     b.客户名称,
    (case when c.类型 = '业务员' then c.姓名 else '' end) as 业务员,
    (case when d.类型 = '话务员' then d.姓名 else '' end) as 话务员
    from
     b 
    left join a c 
    on
     b.业务员 = b.id
    left join a d 
    on
     b.话务员 = b.id
      

  4.   

    select B.客户名称,A.姓名 as 业务员,C.姓名 as 话务员
     from B left join A on B.业务员=A.ID
    left join A as C on B.话务员=C.ID
      

  5.   

    SELECT
    b.客户名称,
    业务员 = c.姓名,
    话务员 = d.姓名
    FROM B表 b
    LEFT JOIN (SELECT * FROM A表 WHERE 类型=N'业务员') c
    ON b.业务员 = c.ID
    LEFT JOIN (SELECT * FROM A表 WHERE 类型=N'话务员') d
    ON b.话务员 = d.ID