Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySql में उपस्थिति रिपोर्ट

यहां एक लंबा रास्ता तय किया गया है जो उम्मीद के मुताबिक काम करना चाहिए:

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

मेरा सुझाव एक ऐसा दृश्य बनाना है जो प्रत्येक कर्मचारी के लिए if कथन करता है जिससे आपका कोड बनाए रखना आसान हो जाएगा। कृपया ध्यान रखें कि यह छद्म कोड है जिसे चलाने के लिए कुछ बदलाव की आवश्यकता हो सकती है।

आशा है कि यह मदद करता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या MySQL में कुछ मानों के मोड (एस) को खोजने का कोई आसान तरीका है?

  2. फ्री होस्ट के माध्यम से mysql को दूरस्थ रूप से कनेक्ट करना

  3. एक पंक्ति अपडेट करें, लेकिन अगर कोडनिर्देशक में पंक्ति मौजूद नहीं है तो डालें

  4. MYSQL अद्यतन सेट एक ही कॉलम पर लेकिन कई WHERE क्लॉज के साथ

  5. MySql.ConnectorNET.Data बनाम MySql.Data