sql >> Database teknologi >  >> RDS >> Mysql

Deltagelsesrapport i MySql

Her er en lang vej, der burde fungere som forventet:

SELECT
    Employee.emp_Name,
    '2011' AS `Year`,
    'Dec' AS `Month`,
    CASE (
        IF(
            DATE('1-12-2011') < DATE(Employee.Joining_Date)),
            '0' --Not joined yet
            IF (
                (SELECT COUNT(*) FROM Holiday WHERE DATE('1-12-2011') = DATE(Holiday.date)) = 1,
                '1', --National Holiday
                IF (
                    (SELECT COUNT(*) FROM Leave WHERE DATE('1-12-2011') > DATE(Leave.to_Date) AND DATE('1-12-2011') < DATE(Leave.from_Date) AND Leave.Emp_Id = Employee.emp_id) = 1,
                    '2', --On Leave
                    IF(
                        (SELECT COUNT(*) FROM Doctor WHERE DATE('1-12-2011') > DATE(Doctor.Call_Date) AND Doctor.call_Done_By = Employee.emp_id) = 1 OR 
                        (SELECT COUNT(*) FROM Chemist WHERE DATE('1-12-2011') > DATE(Chemist.Call_Date) AND Chemist.call_Done_By = Employee.emp_id) = 1,
                        '3' --Visit Doctor or Chemist
                        '4' --Employee was at work
                    )
                )
            )
        )
    )
        WHEN 0 THEN 'N/A' --Not joined yet
        WHEN 1 THEN 'L' --National Holiday
        WHEN 2 THEN 'L' --On Leave
        WHEN 3 THEN 'S' --Visit Doctor or Chemist
        ELSE 'Y' --Employee was at work
    END AS `1`, --first day of month
    ... AS `2`, --repeat for second day of the month till max day of current month replace '1-12-2011' with each different day of month
    ...
    ... AS `30`
FROM
    Employee

Mit forslag er at oprette en visning, der gør if-erklæringen for hver medarbejder, på den måde bliver din kode nemmere at vedligeholde. Husk, at dette er pseudokode, der muligvis skal ændres for at køre.

Håber dette hjælper.




  1. opret brugerdefineret funktion til datoforskel eksklusive weekender og helligdage i oracle sql

  2. Oprettelse af en tabel i enkeltbrugertilstand i postgres

  3. Kan ikke oprette forbindelse til MySQL med Sequelize

  4. Er der nogen reelle fordele ved at bruge et RDBMS vs. flade filer på et simpelt web doc-system (eller grundlæggende CMS)?