我有两个表,第一个是Employee,第二个是Salary。
员工:
薪酬:
这是两张桌子的结构,我需要找到2014年2月薪水最高的人的姓名。
我尝试了以下查询但没有得到正确的输出。
select first_name+' '+last_name as Name from Employee where
(select top(1)empid from Salary order by salary_amt desc)
答案 0 :(得分:2)
您只需加入empId上的第一个和第二个表即可。使用max(salary_amt)并确保在where子句中添加日期条件,如@Lamak所述
答案 1 :(得分:1)
这应该有效:
选择
EMPID,
FIRST_NAME,
姓氏,
sum(salary_amt)为salary_in_month
从
工资s
在s.empID = e.empID上加入员工e
其中
月(salary_month)= 2
和年份(salary_month)= 2014年
empID组
总和(salary_amt)desc的订单
限制1
答案 2 :(得分:1)
select first_name+' '+last_name as Name
from Employee e
join Salary s
On s.EmpId = e.EmpId
and salary_Month = 'Feb 2014'
and cast(s.Salary_amt as money) =
(Select Max(cast(Salary_amt as money))
from salary
Where salary_Month = 'Feb 2014')
注意:Salary.Salary_month和Salary.empId上应该有一个唯一的备用复合键。
答案 3 :(得分:0)
感谢各位朋友的回答。我将salary_amt
的数据类型更改为金钱,工作答案是:
select top(1)first_name+' '+last_name as Name
from Employee e
join Salary s
On s.EmpId = e.EmpId
and salary_Month = 'Feb 2014' order by salary_amt desc
答案 4 :(得分:0)
Empp有两列= id,name
工资有四列= sal_id,id,sal,month
让给定的月份为“ jan”
SELECT E1.name, S1.sal FROM Empp E1 INNER JOIN salary S1 ON E1.id = S1.id where
S1.sal = (select max(S2.sal) from Salary S2
where S2.month='jan');