大家好,我的表数据如下
ID FedTaxID RegularPay Payperiodnumber
1 562545366 500 1
2 562545366 501 1
3 562545366 5000 2
我想获取以下数据
ID FedTaxID RegularPay Payperiodnumber
2 562545366 501 1
3 562545366 5000 2
我尝试了一些类似下面的事情,但我没有得到所需的结果
select max(id) ID,regularpay,fedtaxid,payperiodnumber
from tblemployeegrosswagesn1 where fedtaxid="562545366"
group by payperiodnumber
having count(*) >= 1;
任何人都可以帮助我
答案 0 :(得分:6)
这应该会给你想要的结果:
SELECT t.ID,
t.FedTaxID,
t.RegularPay,
t.Payperiodnumber
FROM tblemployeegrosswagesn1 t
INNER JOIN (SELECT MAX(ID) AS MaxId,
FedTaxID,
Payperiodnumber
FROM tblemployeegrosswagesn1
GROUP BY FedTaxID, Payperiodnumber) AS InnerQuery ON t.ID = InnerQuery.MaxId AND t.Payperiodnumber = InnerQuery.Payperiodnumber AND t.FedTaxID = InnerQuery.FedTaxID
WHERE t.FedTaxID = '562545366';
我对发布的链接很感兴趣;但是,在这种情况下,您需要每个payperiodnumber的最大ID,因此您必须再适应一点。它看起来像:
SELECT t.Id,
t.FedTaxId,
t.RegularPay,
t.Payperiodnumber
FROM tblemployeegrosswagesn1 t
LEFT JOIN tblemployeegrosswagesn1 t1 ON (t.FedTaxId = t1.FedTaxId AND t.Payperiodnumber = t1.PayperiodNumber AND t.id < t1.id)
WHERE t1.ID IS NULL
AND t.FedTaxId = '562545366'
阅读起来要简单得多。非常感谢@BillKarwin提供了一个基于整洁的解决方案。感谢有机会学习新的(并且更好地发布链接)做某事的方式。