SQL查询:根据员工工号和公司代码筛选合同数据并取最合适的记录

假设有一个名为'hrbase_mark_contract'的合同表,其中包含员工工号字段'work_id'、公司代码字段'company_code'、合同订立开始时间'contract_sdate'和自增主键'id'。一个员工可以有多条合同数据,且这些合同数据的'company_code'可能不一致。

现在已知两个参数:

  1. 员工工号('work_id')
  2. 公司代码('company_code')

需要根据这两个参数从合同表中筛选出最合适的合同记录,满足以下条件:

  1. 首先根据'work_id'查出所有数据并根据'id'由小到大排序得到数据集'a'。
  2. 将已知的'company_code'与数据集'a'中的数据根据'id'由大到小依次匹配。
  3. 如果数据集'a'的所有数据都能匹配上,则取出'id'最小的一条数据。
  4. 如果数据集'a'根据'id'由大到小依次匹配遇到一条匹配不上的数据,则舍去'id'比等于或小于这条数据'id'的数据,并取剩余数据中'id'最小的一条数据。

以下是一条满足上述条件的SQL查询语句:

SELECT * FROM hrbase_mark_contract WHERE work_id = '员工工号' AND company_code = '公司代码' ORDER BY id ASC LIMIT 1;

这条SQL语句会首先根据给定的员工工号和公司代码筛选出所有符合条件的数据,并按id从小到大排序。由于使用LIMIT 1,所以只会返回第一条数据,即id最小的数据。

如果数据集a中的所有数据都能匹配上给定的公司代码,则取出id最小的一条数据。如果数据集a根据id由大到小依次匹配遇到一条匹配不上的数据,则舍去id比等于或小于这条数据id的数据,然后取剩余数据中id最小的一条数据。

注意:需要将'员工工号'和'公司代码'替换为实际的参数值。

SQL查询:根据员工工号和公司代码筛选合同数据并取最合适的记录

原文地址: https://www.cveoy.top/t/topic/BzG 著作权归作者所有。请勿转载和采集!

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