我有两个表,EMPL是一个历史员工表,用于跟踪员工税率的变化,PAYROLL也是一个历史表,其中填写了多个期间的员工薪酬。
从EMPL开始,基于EMPL.effect_pd <= PAYROLL.payroll_pd,只有一条记录应该从EMPL连接到PAYROLL。
下面是两个表,查询和结果集。但是,我只希望每个员工每个员工有1条记录,这与基于payroll_pd和effect_pd的相关员工记录相匹配。
首先 - 欢迎!
您编写了“... FROM EMPL,基于EMPL.effect_pd <= PAYROLL.payroll_pd ...”但您使用PAYROLL而不是EMPL启动SQL。
请先测试一下这句话:
SELECT
E.rec_id
,E.empl_id
,E.empl_name
,E.tax_rate
,E.effect_pd
,P.rec_id
,P.payroll_pd
,P.empl_id
,P.pd_pay
FROM
empl AS E
LEFT OUTER JOIN
payroll AS P
ON E.empl_id = P.empl_id
AND E.effect_pd < P.payroll_pd
之后,您将获得7条独特的记录。
我想,就是这样。最好的祝福
经过3天的代码搞砸后,我终于找到了解决方案:
SELECT * FROM PAYROLL p
LEFT JOIN EMPL e on p.empl_id = e.empl_id
WHERE e.rec_id = ( SELECT TOP 1 c.rec_id
FROM EMPL c
WHERE c.empl_id = p.empl_id
AND p.payroll_pd >= c.effect_pd
ORDER BY c.effect_pd DESC );