【问题标题】:Need SQL Query for the following data and Condition需要对以下数据和条件进行 SQL 查询
【发布时间】:2016-12-10 02:52:33
【问题描述】:

我有一张名为 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

My Que is:我将在 where 条件下传递 Emp 的名称。 而且我希望 O/P 就像所有 Emp 都会出来的那样,Salary will 比 Emp 的薪水低(我在 where 条件下通过)

例如

如果我通过 Lalit 如果我通过 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 查询。

【问题讨论】:

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


    【解决方案1】:

    我也是这样发现的:

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

    【讨论】:

      【解决方案2】:

      最好的方法是使用 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
      

      【讨论】:

        【解决方案3】:

        你可以使用不等式连接:

        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'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-01-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-27
          相关资源
          最近更新 更多