查询以显示仅一个月出现但在其他月份不出现的特定员工姓名

时间:2018-07-10 08:45:35

标签: sql sql-server

我需要一个SQL查询来显示“仅在一月”出现但没有出现在2月,3月和4月的员工姓名。

这是表格的详细信息...

valid_to = time()

预期结果如下:

Vamsi

克里希纳

希望我很快会收到您的答复 谢谢。

4 个答案:

答案 0 :(得分:0)

尝试此查询

select Name from Employee where MONTH(date)=1

more details

答案 1 :(得分:0)

在PostgreSQL中,您可以尝试这样的事情。在这里,我选择所有没有一月不是一月的行的员工。

SELECT Name
FROM Employee
WHERE Id NOT IN (SELECT Id FROM Employee WHERE date_part('month', Date) != 1);

答案 2 :(得分:0)

一种简单的方法是使用聚合。如果您只有一年的数据:

select name
from Employee
group by name
having month(min(date)) = month(max(date)) and 
       month(min(date)) = 1;

如果只想要2018年1月:

select name
from Employee
group by name
having min(date) >= '2018-01-01' and
       max(date) < '2018-02-01';

答案 3 :(得分:0)

尝试一下

SELECT Id,Name,[Date]
FROM
(
SELECT *, 
      COUNT(Name)OVER(Partition by Name,DATEPART(YEAR,[date])  ORDER BY id) 
      AS EmpOnlyOnceInMonth
FROM EmployeeData
)dt 
WHERE EmpOnlyOnceInMonth=1 AND DATEPART(M,dt.[date])=1
ORDER BY Id

结果

Id   Name     Date
----------------------
102  Vamsi   2018-01-01
104  Krishna 2018-01-01