【发布时间】:2018-05-25 04:48:36
【问题描述】:
我正在使用 SSMS 查询 SQL Server 2012。我需要 NPH 表中最早 STARTDATE 的记录。如果我有一个客户的行具有相同的开始日期,我会得到一行。但是对于具有不同开始日期的行的客户,我根本没有得到任何结果。为什么它没有从 PLACEMENTHISTORY 表中恢复 min(startdate)?
select distinct lsf.CLIENTNUMBER
,nph.ENDDATE
,nph.STARTDATE
from legalstatusform lsf
left join PLACEMENTHISTORY nph on nph.CLIENTNUMBER = lsf.clientnumber
and (nph.STARTDATE = (select min(startdate) from PLACEMENTHISTORY x
where x.CLIENTNUMBER = nph.CLIENTNUMBER))
where nph.ENDDATE >= '2017-05-01'
and nph.ENDDATE <= '2017-05-31'
and nph.CLIENTNUMBER = '2001'
group by lsf.CLIENTNUMBER, lsf.ENDDATE, nph.STARTDATE, nph.ENDDATE
这个逻辑根本没有给我任何结果
如果我注释掉 min(startdate) 逻辑,我会得到这个客户端的 3 行数据。开始日期为 2017 年 1 月 31 日、2017 年 4 月 11 日和 2017 年 5 月 10 日。那么对于 min(startdate) 逻辑,为什么我不能只得到 1/31/2017 startdate 的第 1 行?
【问题讨论】:
-
它不能返回任何结果,因为该用户的
MIN子查询返回另一个日期(不是这三个日期之一)... -
对,呵呵。我说错了。我应该得到 2017 年 5 月 10 日的日期,但不是没有结果,对吧?
标签: sql sql-server min