SQL Server:以最少的日期返回客户

问题描述

我正在尝试运行一个查询,该查询将返回昨天创建了其第一请购单的所有客户ID。我一直对如何将MIN函数HAVING结合使用感到困惑。

WHERE子句中的语句可以将日期与昨天进行比较,但是我一直对如何写该日期感到困惑,这表明该公司昨天有FirsT / MINIMUM开始日期。

在下面的示例中添加一些颜色:

SELECT
    P.CUSTOMERID,M.CREATEDDATE
FROM 
    DBO.MATCH M
INNER JOIN 
    DBO.POSITION P ON M.REQUISIIONID = P.REQUISITIONID
WHERE
    DATEADD(d,(DATEDIFF(d,m.CREATEDDATE)),0) = DATEADD(d,GETDATE() - 1)),0)

解决方法

我认为您想成为group by客户,并使用having子句进行过滤:

select p.customerid,min(m.createddate) min_createddate
from dbo.match m
inner join dbo.position p on m.requisiionid = p.requisitionid
group by p.customerid
having min(m.createddate) = dateadd(day,-1,convert(date,getdate())