|
sql-programmers
Posting Yak Master
190 Posts |
Posted - 2010-01-16 : 05:42:17
|
| Try the following scripts you can get the expected result.create table EmployeeT (EmpID int,EmpName varchar(5),Collection int,ManagerID int)insert into EmployeeT values(1,'abc', 5000,NULL)insert into EmployeeT values(2 ,'pqr', 5000, 1)insert into EmployeeT values(3,'xyz', 10000, 2)insert into EmployeeT values(4 ,'lmn', 15000, 1)insert into EmployeeT values(5 ,'def', 10000, 2)insert into EmployeeT values(6 ,'opq', 5000, 5)insert into EmployeeT values(7 ,'jkl', 15000, 2)Use the following scripts to get the results,WITH Manager (EmpID, ManagerID, EmpName, Collection,T)AS(-- Anchor member definition SELECT EmpID, ManagerID, EmpName, Collection, 'E' as T from EmployeeT UNION ALL-- Recursive member definition SELECT EmployeeT.EmpID, EmployeeT.ManagerID, EmployeeT.EmpName, Manager.Collection , 'M' as T from EmployeeT INNER JOIN Manager ON Manager.ManagerID = EmployeeT.EmpID WHERE NOt(EmployeeT.ManagerID IS NULL))select * into temp# from Managerinsert into temp# SELECT EmployeeT.EmpID, EmployeeT.EmpID as ManagerID, EmployeeT.EmpName, EmployeeT.Collection, 'E' as T from EmployeeT where EmpID in (select ManagerID from EmployeeT)--select * from temp#select ManagerID,sum(Collection) from temp# where not(ManagerId is null) group by ManagerIDdrop table temp#SQL Server Programmers and Consultantshttp://www.sql-programmers.com/ |
 |
|