我有一个数据库,跟踪客户和他们分配的员工。一个客户端可以分配多个员工,但只能有一个案例管理器。并非所有客户都有指定为案例经理的工作人员。因此,该表如下所示:
Client Case Manager? Staff
John 1 1 Don 1
John 1 0 Don 2
John 1 0 Don 3
John 2 0 Don 1
John 2 0 Don 2
John 3 0 Don 1
John 3 0 Don 2
John 4 1 Don 5因此,John 1被分配给三个员工,但只有Don 1是实际的案例经理。John 2被分配给两个员工,他们都不是案例经理。我希望能够运行一个报告,其中列出了所有客户及其案例经理。如果客户端没有案例管理器,我需要它返回一个NULL或类似的特性。
我可以很容易地将其设置为使用WHERE函数来显示具有案例管理器的客户端,但这会剔除那些没有的客户端。
有什么想法?
发布于 2015-10-03 03:53:19
您可以使用左连接:
SELECT DISTINCT t1.Client, t2.Staff AS CaseManagerName
FROM
tablename t1 LEFT JOIN tablename t2
ON t1.Client = t2.Client
AND t2.casemanager = 1请看fiddle here。
或者,如果一个客户端可以有多个案例管理器,您可以使用GROUP_CONCAT:
SELECT t1.Client, GROUP_CONCAT(DISTINCT t2.Staff) AS CaseManagerName
FROM
tablename t1 LEFT JOIN tablename t2
ON t1.Client = t2.Client
AND t2.casemanager = 1
GROUP BY
t1.Client发布于 2015-10-03 03:57:29
如果上述数据位于单个表中,则使用count()和group by:
select client, count(casemanager) from table group by clienthttps://stackoverflow.com/questions/32914779
复制相似问题