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

Sql 查询以显示仅在一个月内出现但未在其他月份出现的特定员工姓名,sql,sql-server,Sql,Sql Server,我需要一个sql查询来显示“仅在1月份”但不在2月、3月和4月出现的员工的姓名 以下是表格的详细信息 create table Employee(Id numeric(18,0),Name varchar(255),Date date); insert into Employee values(101,'Shiva','2018/01/01'), (102,'Vamsi','2018/01/01'),

我需要一个sql查询来显示“仅在1月份”但不在2月、3月和4月出现的员工的姓名

以下是表格的详细信息

create table Employee(Id numeric(18,0),Name varchar(255),Date date);

insert into Employee values(101,'Shiva','2018/01/01'),
                           (102,'Vamsi','2018/01/01'),
                           (103,'Rajesh','2018/01/01'),
                           (104,'Krishna','2018/01/01'),
                           (105,'Tarun','2018/02/01'),
                           (101,'Shiva','2018/02/01'),
                           (103,'Rajesh','2018/02/01'),
                           (106,'Kaala','2018/03/02'),
                           (107,'Azeez','2018/03/02'),
                           (103,'Rajesh','2018/03/02'),
                           (108,'Eswar','2018/04/02'),
                           (109,'Dora','2018/04/02'),
                           (110,'Akash','2018/04/02'),
                           (103,'Rajesh','2018/04/02');
预期结果如下:

瓦姆西

克里希纳

希望我能很快得到你的答复 谢谢。

试试这个查询

select Name from Employee where MONTH(date)=1

在PostgreSQL中,您可以尝试以下内容。在这里,我选择所有没有行且月份不是一月的员工

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

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

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';
选择名称
来自员工
按名称分组
最小值(日期)>='2018-01-01'和
max(日期)<'2018-02-01';
试试这个

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

您使用的是哪种数据库管理系统?(就日期/时间而言,许多产品远远不符合ANSI SQL。)SQL Server Management Studio 2014使用该示例数据,预期结果是什么?针对未指定dbms的问题的特定于产品的答案。至少告诉我们这是用于哪个dbms的。