我需要一个只显示在多个州获得报酬的员工的查询。
查询将拉出三列:
我目前的尝试不成功:
Select EmployeeID
, WorkLocation
, max(LastPayDate)
from Table
group by EmployeeID, WorkLocation
having COUNT(distinct WorkLocation) > 1
此查询提取零记录。但我知道有些员工曾在多个州工作过。我不确定我的逻辑在哪里崩溃。
非常感谢任何指示。
答案 0 :(得分:0)
您需要有一个计数(workLocation)> 1表示他们已经在超过1个州工作。在HAVING子句中指定它。因为您只关心包含多个WorkLocations的GROUPS。
如果您要检查特定年份内的多个工作地点,您将在WHERE子句中执行该逻辑。
select EmployeeId
from table xyz
//where year(LastPayDate) == 2015
group by EmployeeId
having count(distinct WorkLocation) > 1
答案 1 :(得分:0)
想出来。我需要使用子查询。解决方法如下:
Select t.EmployeeID
, t.WorkLocation
, t.LastPayDate
From Table t
Where t.EmployeeID in
(
Select t2.EmployeeID
From Table t2
Group by t2.EmployeeID
Having count(distinct t2.WorkLocation) > 1
)
Group by t.EmployeeID, t.WorkLocation
Order by t.EmployeeID
感谢大家的帮助。