2013-04-24 3 views
2

안녕하세요 temp #Dates table 하나는 다음 조건을 사용하여 채워집니다.sql의 temp #date 테이블에서 이전 날짜를 선택하는 방법은 무엇입니까?

IF @Period = 'Monthly' 
    BEGIN 
     INSERT #Dates 
     SELECT MAX(DATE) WeekDays FROM TABLENAV WITH (NOLOCK, READUNCOMMITTED) 
     GROUP BY DATEDIFF(MONTH, 0, DATE) 
     ORDER BY MAX(DATE) DESC 
    END 

이제 데이터가 #Dates의 임시 테이블에 내가 어떤 Todays_Date

을 통과있을 때 나는

DECLARE @Todays_Date datetime = '2013-04-22' 
    select date from #Dates where MONTH(DATE) = MONTH(@Todays_Date)-1 AND YEAR(DATE) = YEAR(@Todays_Date) 
을 다음과 같이 시도 Previous_Date을 얻고 싶은

DATE 
2013-04-22 00:00:00.000 
2013-03-29 00:00:00.000 
2013-02-28 00:00:00.000 
2013-01-31 00:00:00.000 
2012-12-31 00:00:00.000 
2012-11-30 00:00:00.000 

입니다

giving ans : 2013-03-29

그러나 연도 변경, 내가 예를 를 들어 ANS

로 아무것도 점점하지있을 때 @Todays_Date = '2012-01-31' 경우 나 2012-12-31 아무것도 제공하지에게 반환해야합니다.

select statement 수정하는 데 도움이됩니다. 당신은 이전의 날짜를 얻기 위해 아래 쿼리를 사용할 수 있습니다

답변

2
select max([Date]) FROM #Date WHERE [Date] <@Todays_Date 
+1

고마워 쉽게 고쳐 나는 때문에 절차의 복잡성을하지 않았다 :) – Neo

2

,

SELECT top 1 Date FROM #Date WHERE Date <@Todays_Date order by date desc