我有两个表,EMPL是一个历史员工表,用于跟踪员工税率的变化,而PAYROLL也是一个历史表,其中填充了多个时期的员工薪水。
FROM EMPL,基于EMPL.effect_pd <= PAYROLL.payroll_pd,应仅将一条记录从EMPL连接到PAYROLL。
下面是两个表,查询和结果集。但是,我只希望每个工资期为每个员工提供1条记录,该记录与基于payroll_pd和effect_pd的相关员工记录匹配。
答案 0 :(得分:0)
首先-欢迎!
您写了“ ... EMROM,基于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条关于女巫的记录。
我认为,就是这样。 最好的问候
答案 1 :(得分:0)
经过三天的代码弄乱之后,我终于找到了解决方案:
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 );