从单个表中选择同一列两次但条件不同

新手上路,请多包涵

我想用他们老板的号码和名字显示员工的姓名和号码,如下所示:

输出

只有一张表:

桌子

到目前为止我试过这个:

 SELECT
    ID,
    Name,
    Boss,
    (SELECT Name FROM Employees WHERE ID IN (SELECT Boss FROM Employees))
FROM Employees

但这给了我一个错误:

“子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的”

原文由 Czapa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

你需要一个自我加入;就像是:

 Select a.ID, a.Name, b.ID as Boss, b.Name as BossName
from Employees A
left join Employees B
on a.Boss = b.ID

原文由 APH 发布,翻译遵循 CC BY-SA 4.0 许可协议

实际上,我必须在我的 Azure DB 中创建一个类似的拆分。使用他们的头衔区分性别(男性和女性)。

在此处输入图像描述

这是代码的一部分。

 select
    (Select count(b.TITLE) from SalesLT.Customer b Where Title LIKE 'Mr%') as women
    ,(Select count(c.TITLE) from SalesLT.Customer c Where Title LIKE 'Ms%') as men
    ,(Select count(d.TITLE) from SalesLT.Customer d Where Title NOT LIKE 'Ms%' AND Title NOT LIKE 'Mr%' ) as unidentified
    ,count(a.TITLE) as Total
from SalesLT.Customer a

结果: 在此处输入图像描述

原文由 Ulysses Koudou 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进