按最近日期查询不同结果的SQL查询

按最近日期查询不同结果的SQL查询,sql,Sql,最亲爱的专业人士 我需要在几个日期范围内获得一些不同客户的列表,但我不能100%确定如何进行 列表1: 我需要distinct(ClientNum),最新的EditDate是从今天起的5年或更久 列表2: 我需要distinct(ClientNum),最新的EditDate介于今天4岁到今天5岁之间 列表3: 我需要使用distinct(ClientNum),最新的EditDate介于今天3岁到今天4岁之间 现在,我得到了以下结果,我只是不知道我是否得到了我认为应该得到的 列表1查询: SELE

最亲爱的专业人士

我需要在几个日期范围内获得一些不同客户的列表,但我不能100%确定如何进行

列表1:
我需要distinct(ClientNum),最新的EditDate是从今天起的5年或更久

列表2:
我需要distinct(ClientNum),最新的EditDate介于今天4岁到今天5岁之间

列表3:
我需要使用distinct(ClientNum),最新的EditDate介于今天3岁到今天4岁之间

现在,我得到了以下结果,我只是不知道我是否得到了我认为应该得到的

列表1查询:

SELECT DISTINCT(ClientNum)
FROM Table
WHERE EditDate < DATEADD(year,-5,GETDATE()) 
SELECT DISTINCT(ClientNum)
FROM Table
WHERE EditDate BETWEEN DATEADD(year,-5,GETDATE()) AND DATEADD(year,-4,GETDATE())
SELECT DISTINCT(ClientNum)
FROM Table
WHERE EditDate BETWEEN DATEADD(year,-4,GETDATE()) AND DATEADD(year,-3,GETDATE())
列表2查询:

SELECT DISTINCT(ClientNum)
FROM Table
WHERE EditDate < DATEADD(year,-5,GETDATE()) 
SELECT DISTINCT(ClientNum)
FROM Table
WHERE EditDate BETWEEN DATEADD(year,-5,GETDATE()) AND DATEADD(year,-4,GETDATE())
SELECT DISTINCT(ClientNum)
FROM Table
WHERE EditDate BETWEEN DATEADD(year,-4,GETDATE()) AND DATEADD(year,-3,GETDATE())
这是正确的方法吗?还是我遗漏了什么

请告知

-尼克

列表1

SELECT ClientNum, max(EditDate) as maxEditDate 
FROM Table
GROUP BY ClientNum
HAVING maxEditDate < DATEADD(year,-5,GETDATE());
清单3

SELECT ClientNum, max(EditDate) as maxEditDate 
FROM Table
GROUP BY ClientNum
HAVING maxEditDate BETWEEN DATEADD(year,-4,GETDATE()) AND DATEADD(year,-3,GETDATE());

DISTINCT不是一个函数。它适用于所有选定的列。(列)只不过是列。。。签出GROUPBY,并结合聚合函数MAX。您可以使用相同的WHERE子句选择MAX(editDate)、min(editDate)以确保。。。并跳过()左右。将不起作用。你不能在WHERE子句中使用别名。这对我很有用。谢谢你,致@Gabriel和其他人。