返回单个表中列的最大值

时间:2013-09-17 14:34:36

标签: 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
000622      2013-06-21 00:00:00.000 A   Y

由于每位员工可能有多个EFFDT日期,我希望能够为每位员工获得MAX EFFDT

我确实尝试了

SELECT  *
FROM    PS_DIRECT_DEPOSIT
WHERE   EFFDT < (SELECT MAX(EFFDT) FROM PS_DIRECT_DEPOSIT)
AND SUPPR_DDP_ADVICE = 'Y'

但是这仍然给了我重复,并没有返回最大EFFDT日期)。 感谢帮助

3 个答案:

答案 0 :(得分:0)

以下内容应该有效:

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子句可能需要进入选择加入

的结果集

答案 1 :(得分:0)

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

答案 2 :(得分:0)

为此我会做以下事情:

SELECT EMPLID, MAX(EFFDT)
FROM PS_DIRECT_DEPOSIT
WHERE SUPPR_DDP_ADVICE = 'Y'
GROUP BY EMPLID
ORDER BY EMPLID

我不确定suppr_ddp_advice是否来自另一张桌子,但这应该适用于您的情况。