如何根据SQL服务器所有负责下属的销售额得出直属下属的总销售额?

How to get the total sales of immediate subordinate based on sales of all subordinate in charge in SQL Server?

结构如下:

ID_EMPLOYEE   ID_EMPLOYEE_BOSS     LEVEL
        -------------------------------------------
            100           NULL                1
            201           100                 2
            202           100                 2
            301           201                 3
            302           201                 3
            303           202                 3
            304           202                 3
            401           302                 4
            402           302                 4
            403           302                 4
            N             N-1                 N

以及销售结构

ID_EMPLOYEE           SALE        DATE
    401               1100.00     2015-06-07
    402               1500.00     2015-06-05
    403               1400.00     2015-06-25
    303               5000.00     2015-05-25
    304               8250.00     2015-05-25

我试过了

WITH Sales_CTE (ID_EMPLOYEE, SALE, MONTHS)
AS
(
    SELECT ID_EMPLOYEE, sum(SALE), DATEPART(mm,DATE)
    FROM SALES
    GROUP BY ID_EMPLOYEE, DATEPART(mm,DATE)
)
SELECT JE.ID_EMPLOYEE, OS.SALE, OS.MONTHS,
    JE.ID_EMPLOYEE_BOSS, OM.SALE, OM.MONTHS
FROM EMPLOYEES AS JE
    JOIN Sales_CTE AS OS
    ON JE.ID_EMPLOYEE= OS.ID_EMPLOYEE
    LEFT OUTER JOIN Sales_CTE AS OM
    ON JE.ID_EMPLOYEE_BOSS= OM.ID_EMPLOYEE
    WHERE ID_EMPLOYEE_BOSS= 302
ORDER BY JE.ID_EMPLOYEE_BOSS;

目前只有n-1级销售人员可以直接看到,但我想显示如下。例如员工 100 可以看到

ID_EMPLOYEE  SALES    MONTH
201           4000    6
202          13250    5

这n关

准备架构

CREATE TABLE STRUCTURE(ID_EMPLOYEE INT, ID_EMPLOYEE_BOSS INT, LEVEL INT)
CREATE TABLE SALES(ID_EMPLOYEE INT,SALE INT,DDATE  DATE)

准备数据

INSERT INTO STRUCTURE VALUES (100,NULL,1)
INSERT INTO STRUCTURE VALUES (201,100, 2)
INSERT INTO STRUCTURE VALUES (202,100, 2)
INSERT INTO STRUCTURE VALUES (301,201, 3)
INSERT INTO STRUCTURE VALUES (302,201, 3)
INSERT INTO STRUCTURE VALUES (303,202, 3)
INSERT INTO STRUCTURE VALUES (304,202, 3)
INSERT INTO STRUCTURE VALUES (401,302, 4)
INSERT INTO STRUCTURE VALUES (402,302, 4)
INSERT INTO STRUCTURE VALUES (403,302, 4)

INSERT INTO SALES VALUES(401,1100.00,'2015-06-07')
INSERT INTO SALES VALUES(402,1500.00,'2015-06-05')
INSERT INTO SALES VALUES(403,1400.00,'2015-06-25')
INSERT INTO SALES VALUES(303,5000.00,'2015-05-25')
INSERT INTO SALES VALUES(304,8250.00,'2015-05-25')

查询

WITH Sales_CTE
AS
(
SELECT ID_EMPLOYEE,ID_EMPLOYEE_BOSS,ID_EMPLOYEE AS ROOTID 
FROM STRUCTURE 
WHERE ID_EMPLOYEE_BOSS=100

UNION ALL

SELECT S.ID_EMPLOYEE,S.ID_EMPLOYEE_BOSS,SC.ROOTID
FROM STRUCTURE S 
        INNER JOIN Sales_CTE SC ON SC.ID_EMPLOYEE = S.ID_EMPLOYEE_BOSS
)

SELECT SC.ROOTID AS ID_EMPLOYEE,SUM(S.SALE) AS SALES,MONTH(S.DDATE) AS [MONTH]
FROM Sales_CTE SC 
       INNER JOIN SALES S ON S.ID_EMPLOYEE = SC.ID_EMPLOYEE
GROUP BY SC.ROOTID,MONTH(S.DDATE)
ORDER BY SC.ROOTID,MONTH(S.DDATE)

SQL Fiddle : http://sqlfiddle.com/#!3/b641d/1