【问题标题】:SQL query to pick all active employees and terminated employees only during a specific periodSQL 查询仅在特定时间段内选择所有在职员工和终止员工
【发布时间】:2020-05-29 13:49:18
【问题描述】:

我编写了一个查询来从表中获取活跃和不活跃的员工-

select papf.name,papf.empl_id,papf.assignment_status_type
from per_all_people_f papf,
per_periods_of_service ppos
where papf.person_id = ppos.person_id
AND (ppos.ACTUAL_TERMINATION_DATE is null or trunc(ACTUAL_TERMINATION_DATE) BETWEEN TO_CHAR (:from_date,
'YYYY-MM-DD') AND TO_CHAR (:TO_DATE, 'YYYY-MM-DD'))
AND ASSIGNMENT_STATUS <> 'Terminated - No Payroll'

此查询将获取所有 ACTIVE 和 INACTIVE 分配(终止 - 符合薪资条件)。我希望仅在过去的日期(即 :from_date 和 :to_date 以及所有 ACTIVE 分配)获取非活动分配/终止工资单合格分配状态。

我添加了一个条件:actual_termination_date is between these dates to pick the Terminated-Payroll 符合条件,或者对于活动分配它为空,但即使实际_termination_date 不在这些日期内,此查询也会获取符合条件的 Terminated-Payroll。

只需添加符合条件的 Terminated-Payroll 对应 INACTIVE IN papf.assignment_status_type

【问题讨论】:

  • 请提供样本数据和期望的结果。为什么您选择不使用正确、明确、标准、可读的JOIN 语法?

标签: sql oracle oracle-sqldeveloper


【解决方案1】:

您正在使用TO_CHAR (:from_date,'YYYY-MM-DD'),您不必将其转换为CHAR,因为您将它与日期进行比较。 (:from_date:to_date

如果:from_date 是日期,则只需使用:from_date,如果:from_date 是字符串,则将其转换为日期,然后将其用作to_date(:from_date,'YYYY-MM-DD')——也适用于:to_date

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-19
    • 2021-12-15
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    相关资源
    最近更新 更多