2014-01-26 4 views
0

Моего запроса являетсяполучить предыдущую дату, используя SQL

SELECT 
    matno, 
    MAT_NAME, 
    MAX(SWITCH(deldate=? ,ORDCASES)) AS [1/1/2014], 
    MAX(SWITCH(deldate=DateAdd("d", -1, ?),ORDCASES)) AS [previous_day] 
FROM invorder 
WHERE (invorder.strno =54009) OR ([invorder.deldate] IS NULL) 
GROUP BY matno,MAT_NAME; 

Здесь я могу просто проверить один до даты выбранной даты, но если их нет записей с предыдущей датой я дата должен уменьшаю еще на один день и проверками пока не найду записи. Может ли кто-нибудь помочь мне, как я могу уменьшить и найти предыдущую дату?

+1

Ваш вопрос помечен тегом [tag: mysql], но ваш синтаксис выглядит как T-SQL. Какие РСУБД вы используете? – eggyal

ответ

0

Без понимания точного случае, я хотел бы предложить такой подход, как:

SELECT MAX(date) 
FROM myTable 
WHERE date < '2014-01-01' --> Replace this as needed 

Это привело бы к предыдущей дате с записью. Без необходимости проверять каждый день путем вычитания.

Я пытался соответствовать ваш случай, попробуйте следующее:

SELECT invorder.matno, 
     invorder.MAT_NAME, 
     MAX(invorder.date) AS this_record_date, 
     MAX(previous.date) AS prev_record_date 
FROM  invorder 
JOIN  invorder AS previous 
        ON invorder.matno = previous.matno 
        AND invorder.strno = previous.strno 
        AND invorder.date > previous.date 
WHERE invorder.strno =54009 
GROUP BY invorder.matno, 
     invorder.MAT_NAME 

Выбирается максимальный рекорд по date из strno 54009, это matno, MAT_NAME и date. Эта строка расширена с максимальной датой того же matno и strno, за исключением даты, которую мы уже выбрали (так почти вторая максимальная дата).

+0

Мне не нужны все даты, мне просто нужны данные предыдущей даты, которые будут отображаться. Мне нужна предыдущая дата для отображения под заголовком столбца «previous_date» – user3202126

+0

@ user3202126 Я продлил свой ответ;) – Aquillo

+0

Спасибо за внимание, я попробовал выше запрос, но я столкнулся с ошибкой ниже. Ошибка синтаксиса в предложении FROM. Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде. – user3202126

Смежные вопросы