我有一张带有Emp_salary名称的表。
表格数据
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
我的阙:我会在条件的地方传递Emp的名字。 而且我希望O / P像所有的Emp都会出来那样的薪水将低于Emp的薪水(我的条件是在那里传递)
实施例
如果我通过拉尔特,如果我通过 Atul O / P将像O / P一样
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
不要使用“子查询”或“功能” 我只需要简单的SQL查询。
答案 0 :(得分:0)
您可以使用非等同连接:
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'
答案 1 :(得分:0)
最好的方法是使用CTE来确定参考工资,然后通过使用非等同连接,只获得薪水低于此薪水的员工。
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
答案 2 :(得分:0)
我也是这样找到的:
SELECT emp.name , emp.slry
from emp
WHERE emp.slry <= (SELECT slry FROM emp WHERE emp.name = 'Lalit')