Besoin d'une requête SQL pour datatables et conditions suivantes

J'ai une table avec le nom Emp_salary.

Données de table

id name Slry 1 Ram 1500 2 janak 500 3 Anuj 400 4 Hardik 2000 5 Amit 2500 6 Atul 3000 7 Rahul 3500 8 Jay 4000 9 Parth 1500 10 Lalit 600 11 Ramesh 5000 

Mon Que est : Je vais passer le nom de Emp dans la condition. Et je veux O / P comme tout Emp sortira que Salary will Less que le salaire de Emp (Que j'ai été passé dans la condition)

Ex.

Si je passe Lalit si je passe Atul O / P sera comme O / P sera comme

 name Slry name Slry janak 500 janak 500 Anuj 400 Anuj 400 Lalit 600 Lalit 600 Ram 1500 Hardik 2000 Amit 2500 Atul 3000 Parth 1500 

N'utilisez pas "Sub Query" ou "Function" Je n'ai besoin que de requêtes SQL simples pour cela.

Vous pouvez utiliser une jointure sans égalité:

 WITH Src AS ( SELECT * FROM (VALUES (1 , 'Ram ', 1500), (2 , 'janak ', 500 ), (3 , 'Anuj ', 400 ), (4 , 'Hardik', 2000), (5 , 'Amit ', 2500), (6 , 'Atul ', 3000), (7 , 'Rahul ', 3500), (8 , 'Jay ', 4000), (9 , 'Parth ', 1500), (10, 'Lalit ', 600 ), (11, 'Ramesh', 5000) )T(id, name, Slry) ) SELECT S1.name, S1.Slry FROM Src S1 JOIN Src S2 ON S1.Slry<=S2.Slry WHERE S2.name='Lalit' 

La meilleure approche consiste à utiliser un ECU pour déterminer le salaire de reference, puis à n'get que des employés dont le salaire est inférieur à ce salaire en utilisant une participation non liée à l'égalité.

 DECLARE @empName as NVARCHAR(100) = 'Atul'; WITH cteRefEmp AS ( SELECT slry FROM tmp.Emp WHERE name = @empName ) SELECT E.name, E.slry FROM tmp.Emp E INNER JOIN cteRefEmp RE ON E.slry <= RE.slry 

J'ai trouvé de cette manière aussi:

 SELECT emp.name , emp.slry from emp WHERE emp.slry <= (SELECT slry FROM emp WHERE emp.name = 'Lalit')