根据员工工号和公司代码查询最新的合同信息
根据员工工号和公司代码查询最新的合同信息
假设有一个合同表 hrbase_mark_contract,包含以下字段:
work_id:员工工号company_code:公司代码contract_sdate:合同订立开始时间id:自增主键
一个员工可以有多条合同数据,这些合同数据的 company_code 可能不一样。
现在需要根据员工工号 (work_id) 和公司代码 (company_code) 查询员工最新的合同信息,满足以下条件:
- 首先根据
work_id查询所有数据并根据id由小到大排序得到数据集a。 - 将已知的
company_code与数据集a的数据根据id由大到小依次匹配。 - 如果数据集
a的所有数据都能匹配上,则取出id最小的一条数据。 - 如果数据集
a中有一条匹配不上的数据,则包括这条匹配不上的数据以及比这条数据的id小的数据都舍去,取剩余数据中id最小的一条数据。
以下是一个满足上述条件的 SQL 查询语句:
SELECT *
FROM (
SELECT *
FROM hrbase_mark_contract
WHERE work_id = '员工工号' -- 替换为实际的员工工号
ORDER BY id ASC
) AS a
WHERE id >= (
SELECT MAX(id)
FROM hrbase_mark_contract
WHERE work_id = '员工工号' -- 替换为实际的员工工号
AND company_code = '公司代码' -- 替换为实际的公司代码
)
ORDER BY id ASC
LIMIT 1;
请将其中的 '员工工号' 和 '公司代码' 替换为实际的员工工号和公司代码。
原文地址: https://www.cveoy.top/t/topic/Ca2 著作权归作者所有。请勿转载和采集!