CustID Name ReferredBy
1 Neeta Sayam
2 Dolly Dilly 1
3 Meena Kimi 2查找所有被他人推荐的客户的名字。
输出应该是dolly和meena kimi.
我成功地为那些通过查询向他人提供咨询服务的客户找到了答案。
SELECT c1.name FROM Customer c1 JOIN Customer c2 ON c1.custid=c2. ReferredBy发布于 2011-09-27 17:57:39
除非我错过了什么:
SELECT *
FROM Customer
WHERE ReferredBy IS NOT NULL发布于 2011-09-27 18:26:59
实现您想要的东西有很多方法,但是一个有趣的方法是使用CTE,因为它允许您按级别获取引用,例如,在您的示例中,零级别将是没有引用的Neeta syam,第一级是dolly dilly和meena kimi。下面的查询将返回dolly dilly和meena 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;https://stackoverflow.com/questions/7573526
复制相似问题