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 を考慮すると、AddedBy=1 の Column 値とその下位レベルの従業員であるすべてのユーザーの価格が計算されます。UserId を持つユーザーの合計価格が計算されることを意味します: 1、2、3、4、5、6、7、8、9。

ケース 2: 同様に、UserId=3(SubAdmin2) で合計金額を計算したい場合、userId を持つユーザーの salesMaster からの合計金額が計算されます: 3,8,9

最初のケースの結果は次のようになります。

UserId     Price
1          2066

2 番目のケースの結果は次のようになります。

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 に答える