0

我有两个看起来像这样的表:

SalesPeople
-----------
SalesID, FirstName, LastName, Supervisor

Members
-------
MemberID, Firstname, LastName, Region, SalesID

试图显示每个销售人员的 ID 和分配给他们的成员。我编写了以下 SQL 查询:

SELECT s.*
FROM salespeople s
INNER JOIN members m ON s.salesid = m.salesid

但是,如果没有将销售人员分配给任何成员,我需要为该输出说“未分配成员”。我还想将 MemberID 列标记为“客户”。

上面的代码有效,但是当我尝试将 Members MemberID 列标记为“Clients”时出现错误:

SELECT s.*
FROM salespeople s
INNER JOIN members m AS Clients ON s.salesid = m.salesid

我的问题再次是:

我如何显示销售人员的SalesID匹配MemberID项。如果销售人员未分配给任何成员,只需显示:“未分配成员”。正如我上面所说,我需要将显示该MemberID列的列标记为Clients.

如果无论如何这令人困惑,我很乐意澄清。

4

1 回答 1

2

试试这个:

SELECT s.*, COALESCE(m.memberId, 'No Members Assigned') clients
FROM salespeople s
LEFT JOIN members m ON s.salesid = m.salesid

当该销售人员没有成员时,LEFT JOIN将使您为空。m.memberId

COALESCE函数将返回作为输入发送的第一个非空参数。因此,在这种情况下,如果m.memberId为 null,'No Members Assigned'则将返回。

将它们结合起来的结果就是您所期望的结果。

于 2013-10-27T21:59:34.910 回答