日期:2014-05-17 浏览次数:20491 次
--create table Sales
--(
--雇员ID int NULL,
--姓名 nchar(10) NULL,
--层次 int NULL,
--上级ID int NULL,
--销售额 money NULL
--)
--insert into Sales values(1,'王伟',1,0,900)
--insert into Sales values(2,'张三',2,1,175)
--insert into Sales values(3,'李四',2,1,400)
--insert into Sales values(4,'王五',2,1,185)
--insert into Sales values(5,'赵六',3,2,190)
--insert into Sales values(6,'小七',3,2,110)
--insert into Sales values(7,'小八',3,3,550)
;WITH cte AS (
SELECT *
FROM sales
WHERE 层次=(SELECT MAX(上级id) FROM sales)
UNION ALL
SELECT b.雇员ID,b.姓名,a.层次,b.上级ID,a.销售额+b.销售额 AS 销售额
FROM sales b INNER JOIN cte a ON a.上级ID=b.雇员ID)
SELECT 雇员ID,姓名,层次,上级ID,SUM(销售额)销售额
FROM cte
GROUP BY 雇员ID,姓名,层次,上级ID
/*
雇员ID 姓名 层次 上级ID 销售额
----------- ---------- ----------- ----------- ---------------------
1 王伟 3 0 4300.00
2 张三 3 1 650.00
3 李四 3