0

我有以下表格:

用户主

UserId Int, UserName Varchar(200),AddedBy Int

UserId     EmpName           AddedBy
1          admin             0
2          SubAdmin1         1
3          SubAdmin2         1    
4          Vikas             2      
5          Mohit             4
6          Atul              5 
7          Vishal            6
8          Mani              3
9          Sunny             8

销售大师

SalesId Int, UserId Int (FK_UserMaster_UserId) , Price Int

SalesId  UserId  Price

1        1       100         
2        2       200      
3        3       300      
4        4       500     
5        5       100
6        6       200
7        7       111
8        8       222
9        9       333

案例1:现在我想要一个特定用户下的所有用户的总价格和它自己的价格。意味着如果我考虑 UserId=1 ,那么将为所有 AddBy=1 中列值的用户及其较低级别的员工计算价格。表示将针对具有 UserId 的用户计算用户的总价格:1,2,3,4,5,6,7,8,9。

案例 2:类似地,如果我想计算 UserId=3(SubAdmin2) 下的总价格,那么将针对具有 UserId 的用户计算来自 salesMaster 的总价格:3,8,9

第一个案例的结果应该是:

UserId     Price
1          2066

第二种情况的结果应该是:

UserId     Price
3          300+222+333

请帮忙

感谢和问候尼丁

4

1 回答 1

0
with cte as (
    select @UserId as UserId
    union all
    select um.UserId
    from UserMaster as um
        inner join cte as c on c.UserId = um.AddedBy
)
select sum(s.Price)
from cte as c
    inner join SalesMaster as s on s.UserId = c.UserId

sql fiddle demo

于 2013-10-01T10:52:23.900 回答