我只需要在一个表中从一个特定列(日期)获取最大值。
这是包含一些示例数据的表(使用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日期)。 感谢帮助
答案 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是否来自另一张桌子,但这应该适用于您的情况。