使用sql获取上一个日期

时间:2014-01-26 08:28:39

标签: mysql sql gridview

我的查询是

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 个答案:

答案 0 :(得分: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 54009 strno的最大记录,matnoMAT_NAMEdate。此行的扩展时间与matnostrno的最大日期相同,不包括我们已选择的日期(因此几乎是第二个最大日期)。