I have three tables as shown below:
Create table #temp (id int, DepartmentName varchar(50)) insert into #temp (id,DepartmentName) values(1,'Account') insert into #temp (id,DepartmentName) values(2,'IT') select * from #temp Create Table #temp1(customerid int, CustomerName varchar(50),DepartmentId int) Insert into #temp1(customerid,CustomerName,DepartmentId)values(1,'Anil',1) Insert into #temp1(customerid,CustomerName,DepartmentId)values(2,'Ankit',2) Insert into #temp1(customerid,CustomerName,DepartmentId)values(3,'Mandeep',1) Insert into #temp1(customerid,CustomerName,DepartmentId)values(4,'Rajesh',2) Insert into #temp1(customerid,CustomerName,DepartmentId)values(5,'Rohit',1) Insert into #temp1(customerid,CustomerName,DepartmentId)values(6,'Sharma',0) Create Table #temp2(customerid int, salary int) insert into #temp2(customerid,salary)values(1,2000) insert into #temp2(customerid,salary)values(3,2399) insert into #temp2(customerid,salary)values(4,4000) insert into #temp2(customerid,salary)values(2,4500) insert into #temp2(customerid,salary)values(5,7000) select max(t2.salary) ,t.CustomerName,t1.DepartmentName from #temp1 t left join #temp t1 on t1.id=t.DepartmentId left join #temp2 t2 on t2.customerid=t.customerid where DepartmentName='Account' and salary<>(select max(tt2.salary) from #temp2 tt2 inner join #temp1 tt1 on tt1.customerid=tt2.customerid inner join #temp tt on tt.id=tt1.DepartmentId where tt.DepartmentName='Account') group by CustomerName,DepartmentName
But not having received the second largest salary with this, someone may like to help me with this, I use the maximum aggregate function in the external request, but still get the whole salary of the account department.