2016-08-04 47 views
3

我有一個Emp_salary名稱的表。需要SQL查詢以下數據和條件

表數據

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像所有僱主會出來,這是薪水將低於該僱主的工資(那是我通過在哪裏條件)

Ex。

如果我通過拉利特如果我通過阿圖爾 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

可以使用非等式連接:

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' 
+0

謝謝。它的工作 –

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 
+1

謝謝。 CTE正在工作。 –

0

我這樣還發現:

SELECT emp.name , emp.slry 

from emp 

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