USE [Emp1]

CREATE FUNCTION [dbo].[Leave] 
   @EmployeeID INT    


    @NonPayLeave INT;

SET @PayLeave = 0;
SET @NonPayLeave = 0;

    IF((ImDescription == "Sick") AND (ImLeaveType == "Yearly"))
        IF((ImMonthlyMaxLeave > 1) OR (ImYearlyMaxLeave > 10 ))
            @NonPayLeave = @NonPayLeave + 1;
            PRINT @NonPayLeave;
            @PayLeave = @PayLeave + 1;
            PRINT @PayLeave;


--PRINT dbo.Leave('123')

How to convert the following SQL-C# logic to syntactically-correct SQL code (SQL Server 2005)?

"Description", "LeaveType", "MonthlyMaxLeave", "YearlyMaxLeave" are the column names in the table EmpTab.

I have written a basic logic to calculate the PayLeave and NonPayLeave, and to display its final values. Assume that the fields "Description" and "LeaveType" always contains the values "Sick" and "Yearly" respectively. Please do not worry about the data in the table. The field values in the table may be customized as per the requirements.

Just correct the syntax in the code so as to meet the SQL standards, as well as to display the PayLeave and NonPayLeave values based on the calculation logic shown below.

Re: How to convert the SQL-C# logic to correct SQL code (SQL Server 2005)? 80 80

Assuming a lot, this could work:

select sum(non_pay) as non_pay_leave, sum(pay) as pay_leave
from (
select 1 as non_pay, 0 as pay 
from table
where employee= @employeeid
and description = "Sick" 
and leavetype = "Yearly" 
and (monthlymaxleave > 1 
or yearlymaxleave > 10 ) 
union all 
select 0, 1 
from table
where employee = @employeeid
and description = "Sick" 
and leavetype = "Yearly" 
and (monthlymaxleave <= 1 
or yearlymaxleave <= 10) 
) a 
Be a part of the DaniWeb community

We're a friendly, industry-focused community of 1.19 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.