2013-04-24 3 views
2

Привет есть один temp #Dates table который заполняется используя нижеследующие условия.Как выбрать предыдущую дату из таблицы temp #dat в sql?

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 является

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 

Я хочу, чтобы получить Previous_Date, когда я передаю любой 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) 

giving ans : 2013-03-29

Но когда меняется год, я не получаю ничего, как анс

Например Если @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 
Смежные вопросы