How to select the same field twice with different conditions and display results as separate fields

后端 未结 3 616
渐次进展
渐次进展 2021-01-24 23:56

I want to create a Table Adapter in C# as follows.

I wish to use same filed in a table twice with different conditions, and it must be shown as two diff

3条回答
  •  既然无缘
    2021-01-25 00:40

    The Same thing Can also be done using Switch :)

    SELECT EmpAttendance.EmpID, EmpAttendance.Empname, EmpAttendance.EmpSex, EmpAttendance.EmpDepartment, EmpProfileTBL.Salary, 
    SUM(SWITCH(EmpAttendance.AttendStatus = 'Present', 1, EmpAttendance.AttendStatus = 'Absent', 0, EmpAttendance.AttendStatus = 'Half-Day', 0)) AS TotalPresent,
    SUM(SWITCH(EmpAttendance.AttendStatus = 'Absent', 1, EmpAttendance.AttendStatus = 'Present', 0, EmpAttendance.AttendStatus = 'Half-Day', 0)) AS TotalAbsent,
    SUM(SWITCH(EmpAttendance.AttendStatus = 'Half-Day', 1, EmpAttendance.AttendStatus = 'Present', 0, EmpAttendance.AttendStatus = 'Absent', 0)) AS HalfDay,
    
    DatePart('m', EmpAttendance.DateOfAttendance) AS CurMonth,
    ((EmpProfileTBL.Salary * TotalPresent) - (EmpProfileTBL.Salary * TotalAbsent) 
                             + ((EmpProfileTBL.Salary / 2) * HalfDay)) AS FinalSalary
    FROM ((EmpAttendance INNER JOIN LocalVariableTable
    ON EmpAttendance.EmpDepartment = LocalVariableTable.TempDepartment AND
    DatePart('m', EmpAttendance.DateOfAttendance) = LocalVariableTable.TempMonth
     AND DatePart('yyyy', EmpAttendance.DateOfAttendance) = LocalVariableTable.TempYear)
    INNER JOIN
    EmpProfileTBL ON EmpAttendance.EmpID = EmpProfileTBL.EmpID)
    
    GROUP BY EmpAttendance.EmpID, EmpAttendance.Empname, EmpAttendance.EmpSex,
    EmpAttendance.EmpDepartment, DatePart('m', EmpAttendance.DateOfAttendance), 
    EmpProfileTBL.Salary
    ORDER BY DatePart('m', EmpAttendance.DateOfAttendance) DESC
    

提交回复
热议问题