Sql server 返回单个表中列的最大值
我只需要从一个表中的一个特定列日期获取最大值 以下是使用sql server 2000的一些示例数据表: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
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_的建议是否来自另一张桌子,但是这对您的情况应该有效。太好了,看起来很好。感谢您的快速帮助/回复!