3
 CustID       Name         ReferredBy
 1         Neeta Sayam  
 2         Dolly Dilly         1
 3         Meena Kimi          2

查找其他人推荐的所有客户的姓名。

输出应该是 dolly dilly 和 meena kimi。

我已成功找到通过查询转发他人的客户

 SELECT c1.name FROM Customer c1 JOIN Customer c2 ON c1.custid=c2. ReferredBy
4

2 回答 2

6

除非我错过了什么:

SELECT *
FROM Customer
WHERE ReferredBy IS NOT NULL
于 2011-09-27T17:57:39.687 回答
1

有很多方法可以实现您想要的,但一种有趣的是使用 CTE,因为它允许您按级别获取参考,例如,在您的情况下,零级将是Neeta syam没有参考,一级是dolly dillymeena kimi。以下查询将返回dolly dillymeena kimi并且在指定的级别中,where reference = 1如下所示:

WITH CTEs (Id, CustomerName, Reference, RefCustomer)
AS
(
  SELECT 
    Id,
    Name,
    0 As Reference, 
    CONVERT(VARCHAR(length), 'No Reference') AS RefCustomer 
  FROM Customers 
  WHERE ReferredBy IS NULL
  UNION ALL
  SELECT
    c.CustId,
    c.Name, 
    cs.Reference + 1, 
    cs.CustomerName 
  FROM Customers c 
  INNER JOIN Ctes cs ON c.ReferedBy = cs.Id
)
SELECT CustomerName, RefCustomer 
FROM Ctes 
WHERE Reference = 1;
于 2011-09-27T18:26:59.180 回答