根据员工工号和公司代码查询最新的合同信息

假设有一个合同表 hrbase_mark_contract,包含以下字段:

  • work_id:员工工号
  • company_code:公司代码
  • contract_sdate:合同订立开始时间
  • id:自增主键

一个员工可以有多条合同数据,这些合同数据的 company_code 可能不一样。

现在需要根据员工工号 (work_id) 和公司代码 (company_code) 查询员工最新的合同信息,满足以下条件:

  1. 首先根据 work_id 查询所有数据并根据 id 由小到大排序得到数据集 a
  2. 将已知的 company_code 与数据集 a 的数据根据 id 由大到小依次匹配。
  3. 如果数据集 a 的所有数据都能匹配上,则取出 id 最小的一条数据。
  4. 如果数据集 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录