2013-10-01 107 views
0

從3個表hierarichal數據我有如下表:需要在SQL Server

UserMaster

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 

SalesMaster

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,那麼將計算所有用戶的價格,其中列值AddedBy = 1 及其下級員工。 表示具有UserId的用戶的總用戶價格將爲:1,2,3,4,5,6,7,8,9。

例2:類似地,如果我想計算下用戶ID = 3(SubAdmin2)的總價格然後從salesMaster總價將具有用戶ID的用戶來計算爲:3,8,9

第一案的結果應該是:

UserId  Price 
1   2066 

第二殼的結果應該是:

UserId  Price 
3   300+222+333 

請幫助

感謝&問候 尼廷

+0

歡迎SO。你試過什麼了? – zero323

回答

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

+0

非常感謝您的回覆......您解決了我的問題 – user2833892