suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Erhalten Sie Aufzeichnungen über Mitarbeiter, die 11 aufeinanderfolgende Tage frei genommen haben

<p>Ich habe eine Anwesenheitsliste mit Feldern für Mitarbeiternummer, Status und Anwesenheitsdatum. Ich möchte eine SQL-Abfrage verwenden, um die Datensätze von Mitarbeitern abzurufen, die an 11 aufeinanderfolgenden Tagen Urlaub genommen haben. Voraussetzung ist, dass der Anwesenheitsstatus des Mitarbeiters an 11 aufeinanderfolgenden Tagen, einschließlich Wochenenden, Urlaub, Abwesenheit oder nicht markierte Anwesenheit (ein Datumsdatensatz, der nicht im Anwesenheitsdokument vorhanden ist) lautet. </p> <p>Die Kriterien können eine Mischung aus allen Status sein, also Urlaub, Abwesenheit oder ungemerkte Anwesenheit. </p>
P粉014218124P粉014218124535 Tage vor534

Antworte allen(1)Ich werde antworten

  • P粉893457026

    P粉8934570262023-08-17 12:58:40

    这个查询找到在考勤记录中有连续11天“请假”、“缺席”或“未标记”状态的员工。它将员工数据与考勤数据连接起来,过滤特定的状态和日期范围,对数据进行分组,然后仅选择那些记录数为11的组。

    SELECT DISTINCT a.employee_code
    FROM employees e
    JOIN attendance a ON e.employee_code = a.employee_code
    WHERE a.attendance_date BETWEEN a.attendance_date AND DATE_ADD(a.attendance_date, INTERVAL 10 DAY)
      AND a.status IN ('请假', '缺席', '未标记')
    GROUP BY a.employee_code, a.attendance_date
    HAVING COUNT(*) = 11;

    如果这个查询对您不起作用,请分享您的模式。如果这个查询有任何错误,请指出。

    Antwort
    0
  • StornierenAntwort