从具有具有相似信息的多行的表中选择 Max(date)



我正在尝试在记录所有状态更改的表中选择最新的状态更改,并且位于两个日期参数之间。

但是,它会选择返回的所有行,而不是在我指定的日期内。

    Declare 
@Rangefrom date,
@Rangetill date;
SET @rangefrom = DATEADD(day, -50, GETDATE()) 
SET @Rangetill = DATEADD(day, -90, GETDATE())
Select 
  a.Candidate
, a.Newstatus
, @rangefrom
, a.date
, @rangetill
, a.Consultant
From AppStatusHistory as A
WHERE newstatus = 'Working Compliant' OR newstatus = 'Registered Compliant'
AND A.Date BETWEEN @rangefrom AND  @Rangetill
AND A.Date = (select max(B.date)
                from AppStatusHistory AS B
                where B.Candidate = a.Candidate)

根据我的理解,这应该选择 a.date = MAX(b.date( 介于 @rangefrom 和 @rangetill 之间。

我认为查询确实可以满足您的需求,只是在您的情况下@rangefrom>@rangeuntil您可能希望交换变量声明中的值。

Where条件应为:WHERE (newstatus = 'Working Compliant' OR newstatus = 'Registered Compliant)...

您需要小心OR,缺少新状态选择条件的()。如果不添加该内容,OR将返回更多结果。

最新更新