내 요구 사항은 한 달에 PAID DAYS를 계산하는 것입니다. PAID DAYS = NoOfDaysInMonth-LEAVES입니다.SQL 쿼리에서 계산을 수행하는 방법
일 없음을 얻기 위해 나는
declare @DATE datetime
declare @NoOfDaysInMonth int
set @DATE='2014-3-01'
select @NoOfDaysInMonth= DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,@DATE),0)))
print @NoOfDaysInMonth
사용하고이 삼십일일 반환합니다.
다음은 작동하지 않는 이전 쿼리입니다.
datediff(day, MONTH(getdate()), dateadd(month, 1, month(getdate())))
대신에
******* datediff(day, MONTH(getdate()), dateadd(month, 1, month(getdate())))-(SELECT TOTALUNPAIDLEAVES FROM FN_GETTOTALLEAVESFORANEMPLOYEE(VW_EMPLOYEE_DETAILS.EMPLOYEEID,'''[email protected]+''','''[email protected]+''')) as [Paid Days] FROM VW_EMPLOYEE_DETAILS'
나는 변수 @NoOfDaysInMonth을 통과해야합니다. 내 코드를 수정 한 후
@NoOfDaysInMonth-(SELECT TOTALUNPAIDLEAVES FROM FN_GETTOTALLEAVESFORANEMPLOYEE(VW_EMPLOYEE_DETAILS.EMPLOYEEID,'''[email protected]+''','''[email protected]+''')) as [Paid Days] FROM VW_EMPLOYEE_DETAILS
는
SET @[email protected]+' (SELECT TOTALLEAVESUSED FROM FN_GETTOTALLEAVESFORANEMPLOYEE(VW_EMPLOYEE_DETAILS.EMPLOYEEID,'''[email protected]+''','''[email protected]+''')) as [Total Leaves Used],(SELECT TOTALUNPAIDLEAVES FROM FN_GETTOTALLEAVESFORANEMPLOYEE(VW_EMPLOYEE_DETAILS.EMPLOYEEID,'''[email protected]+''','''[email protected]+''')) as [Total UnPaid Leaves], (select @DaysInMonth -(SELECT TOTALUNPAIDLEAVES FROM FN_GETTOTALLEAVESFORANEMPLOYEE(VW_EMPLOYEE_DETAILS.EMPLOYEEID,'''[email protected]+''','''[email protected]+'''))) as [Paid Days] FROM VW_EMPLOYEE_DETAILS'
이제이 새로운 코드 조각으로 무엇을하려하는지 이해하지 못합니다. SET @ COMMANDS = @ COMMANDS + '... 결과를 하나의 변수로 가져 오시겠습니까? 그것은 아무런 이유없이 너무 복잡해지고 있습니다. –
다른 코드는 모두 남겨 두었습니다. 아래에서 말한대로 코드를 변경했습니다 .... (@DaysInMonth - (VW_EMPLOYEE_DETAILS.EMPLOYEEID, ''+ @ YEAR + '' '' '' '+'FN_GETTOPLELEAVESFORANEMPLOYEE @ MONTH + '' ')))) VW_EMPLOYEE_DETAILS에서 [Paid Days]로 표시되지만 프로 시저가 표시되지 않고 결과 (레코드) ... "명령이 성공적으로 실행되었습니다." –
왼쪽 괄호의 수는 숫자 또는 오른쪽 괄호와 동일합니까? –