Sql server 返回单个表中列的最大值

Sql server 返回单个表中列的最大值,sql-server,sql-server-2000,Sql Server,Sql Server 2000,我只需要从一个表中的一个特定列日期获取最大值 以下是使用sql server 2000的一些示例数据表: EMPLID EFFDT EFF_STATUS SUPPR_DDP_ADVICE 000619 2007-07-09 00:00:00.000 A Y 000619 2008-04-04 00:00:00.000 A Y 000619 2008-04-18 00:00:00.000 A Y

我只需要从一个表中的一个特定列日期获取最大值

以下是使用sql server 2000的一些示例数据表:

EMPLID            EFFDT                  EFF_STATUS   SUPPR_DDP_ADVICE
000619      2007-07-09 00:00:00.000 A   Y
000619      2008-04-04 00:00:00.000 A   Y
000619      2008-04-18 00:00:00.000 A   Y
000622      2013-06-21 00:00:00.000 A   Y
由于每个员工可能有几个EFFDT日期,我希望能够获得每个员工的最大EFFDT

我确实试过了

SELECT  *
FROM    PS_DIRECT_DEPOSIT
WHERE   EFFDT < (SELECT MAX(EFFDT) FROM PS_DIRECT_DEPOSIT)
AND SUPPR_DDP_ADVICE = 'Y'
但这仍然给了我副本,并且没有返回max EFFDT日期。
感谢您的帮助

以下几点应该有效:

SELECT  a.*
FROM    PS_DIRECT_DEPOSIT a INNER JOIN (SELECT EMPLID, MAX(EFFDT) as MaxDate FROM PS_DIRECT_DEPOSIT GROUP BY EMPLID) b ON a.EMPLID = b.EMPLID and a.EFFDT = b.MaxDate
WHERE SUPPR_DDP_ADVICE = 'Y'

where子句可能需要进入连接到的结果集的select中。为此,我将执行以下操作:

SELECT EMPLID,EFFDT
FROM(SELECT  EMPLID,
             EFFDT,        
             ROW_NUMBER() OVER (PARTITION BY EMPLID ORDER BY EFFDT DESC) AS number
     FROM PS_DIRECT_DEPOSIT) a
WHERE   number = 1
SELECT EMPLID, MAX(EFFDT)
FROM PS_DIRECT_DEPOSIT
WHERE SUPPR_DDP_ADVICE = 'Y'
GROUP BY EMPLID
ORDER BY EMPLID

我不确定suppr_ddp_的建议是否来自另一张桌子,但是这对您的情况应该有效。

太好了,看起来很好。感谢您的快速帮助/回复!