需要SQL查询以获取以下数据和条件

时间:2016-08-04 06:05:59

标签: sql sql-server database sql-server-2008

我有一张带有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查询。

3 个答案:

答案 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')