2013-10-03 2 views
2

여기에서 구문을 약간 도와 드릴 수 있는지 궁금합니다. 변수가 월의 25 일을 경과하는지 여부에 따라 달 값으로 설정하려고합니다.GETDATE()가 포함 된 CASE 문

이 경우 현재 월을 사용합니다 (예 : 10 월 28 일의 경우 'month'변수는 10 월이지만 10 월 24 일인 경우 9가됩니다). case 문은 평가 (=)에 대한 한, 난 당신이 표시보다 작거나 이상을 사용할 수 없습니다 이해

select a 
case 
    when (SELECT DAY(GETDATE()) >= 25 
    then a = (SELECT MONTH(GETDATE())) 
    else a = (SELECT MONTH(GETDATE()) - 1) 
end 

: 지금까지 나는 다음있어? 누구든지이 일을하는 또 다른 방법을 제안 할 수 있습니까?

감사합니다.

답변

1

내가 이해하는 한, 이러한 종류의 사용법이 필요합니다.

select 
case 
    when DAY (GETDATE()) = 25 then MONTH(GETDATE()) 
    else MONTH(GETDATE()) - 1 
end 
+1

네, 정확히 내가 필요한 것. 매우 감사합니다 :) – CSF90

2
select @your_variable = case when DAY(GETDATE()) = 25 
          then MONTH(GETDATE()) 
          else MONTH(GETDATE()) - 1 
         end 
+0

거의 브래킷은 여기없는 나는 – Fred

+0

감사합니다 생각합니다. 그들을 놓쳤습니다. –

+0

네, 완벽하게 작동합니다. 당신의 도움을 주셔서 감사합니다. 오스 쿠스 (Ouscux)가 먼저 게시 한대로 '대답'으로 표시 할 수 있습니다. 내가 할 수 있으면 나는 당신을 업 그레 이드 하겠지만 (충분하지 않은 담당자)! – CSF90

1

당신은 CASE>< 연산자를 사용할 수 있습니다. 다음과 같은 것이 예상 한 것입니까?

SELECT CASE WHEN DAY(GETDATE()) > 24 
    THEN MONTH(GETDATE()) 
    ELSE MONTH(GETDATE()) + 1 
END AS [a] 
0
IF 
DAY(GETDATE()) <=25 
SELECT DATEADD(month,-1,CURRENT_TIMESTAMP)