我现在有两张数据表,一张是人员从19年1月到23年1月每月工资发放明细表,一张是19年到23年人员签订合同的起止时间,我要怎么用sql语句判断发工资那个月在不在合同期间
时间: 2024-03-16 09:46:35 浏览: 53
SQL语句,查询当月,当年数据
5星 · 资源好评率100%
假设第一张表为`salary`,包含以下字段:
- `id`:工资发放记录ID
- `person_id`:人员ID
- `salary_date`:工资发放日期
- `amount`:工资金额
第二张表为`contract`,包含以下字段:
- `id`:合同ID
- `person_id`:人员ID
- `start_date`:合同起始日期
- `end_date`:合同结束日期
可以使用以下SQL语句来查询发工资那个月是否在合同期间:
```sql
SELECT s.id, s.person_id, s.salary_date, s.amount,
CASE
WHEN s.salary_date BETWEEN c.start_date AND c.end_date THEN '在合同期间'
ELSE '不在合同期间'
END AS '是否在合同期间'
FROM salary s
LEFT JOIN contract c ON s.person_id = c.person_id
AND s.salary_date BETWEEN c.start_date AND c.end_date;
```
这里使用了`LEFT JOIN`来关联两张表,并且在`SELECT`语句中使用了`CASE`语句来判断发工资那个月是否在合同期间。如果在合同期间,则返回`在合同期间`,否则返回`不在合同期间`。
阅读全文