表格
- 客户 c(主键 = ID)
- CustomerGroup cg(外键 = CustID)
内容
- 客户 - ID、姓名
- 客户组 ID、CustID、名称
要检索的字段
c.名称,cg.名称
问题
我想显示名为“Sales”的组中的所有客户,并在 cg.Name 中显示“Sales”值。但是,任何不属于“销售”组的客户都将显示客户名称,但将组名称保留为“空白”。
尝试过
SELECT c.Name, cg.Name, [NotInGroup].group
FROM Customer c
LEFT JOIN CustomerGroup cg on cg.CustID= c.ID
OUTER APPLY(
SELECT c2.Name, cg2.Name as [group]
FROM Customer c2
LEFT JOIN CustomerGroup cg2 on cg2.CustID= c2.ID
WHERE cg1.Name != 'Sales'
) as [NotInGroup]
WHERE cg.Name = 'Sales'
期望的结果
- 客户 1“销售”
- 客户 2“销售”
- 客户 3“”
- 客户 4“”
- 客户 5“销售”
提前致谢。
最佳答案
一种方法使用左连接
:
SELECT c.Name, cg.Name,
FROM Customer c LEFT JOIN
CustomerGroups cg
ON cg.custid = c.id AND
cg.Name = 'Sales';
请注意,对 Sales
的过滤位于 ON
子句中。这很重要,除非您希望为每个客户以及该客户所在的每个组提供单独的行。
另外,请注意连接条件。
关于sql - 如果客户不在群组中则显示空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54401154/