我正在尝试在记录所有状态更改的表中选择最新的状态更改,并且位于两个日期参数之间。
但是,它会选择返回的所有行,而不是在我指定的日期内。
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
将返回更多结果。