关于树结构统计的sql语句
我有一个树结构如下:
A--B--B1
B2
C--C1
D--D1
D2
D3--D31
采用两个表,表一为客户表,字段包括:CustomerId,HighLevelId(上级主管)
另一个表为客户付款记录表,主要字段:PayId,CustomerId,PayMoney
现在要统计每个客户的付款金额,要求上下级关系限制为5级,感觉上很麻烦,根据网上一些文章作了一个递归函数可以实现某个客户(包括他的下级客户)数据的统计,不过没法做到只统计5级关系的数据。各位大虾指点一下,多谢!另外如何做到统计所有客户的数据(上下级关系限制到5级),并且按统计数据的金额倒序排列?
递归函数如下:
CREATE FUNCTION dbo.GetTotalSalary
(
@CustomerId AS INT
)
RETURNS int AS
BEGIN
RETURN (
SELECT SUM(p.PayMoney) FROM Customer c JOIN Payment p
ON c.CustomerId = p.CustomerId
WHERE c.CustomerId = @CustomerId) +
CASE
WHEN EXISTS(SELECT * FROM Customer WHERE HighLevelId = @CustomerId) THEN
( SELECT SUM(dbo.GetTotalSalary(CustomerId)) FROM Customer
WHERE HighLevelId = @CustomerId
)
ELSE 0
END
END