Mysql 使用sql获取以前的日期
我的问题是Mysql 使用sql获取以前的日期,mysql,sql,gridview,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 B
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;
在这里,我可以只检查所选日期之前的一个日期,但如果它们没有上一个日期的记录,我应该将日期再减少一天,并进行检查,直到找到记录为止。有人能帮助我如何减少并找到上一个日期吗?在不了解确切情况的情况下,我建议采用如下方法:
SELECT MAX(date)
FROM myTable
WHERE date < '2014-01-01' --> Replace this as needed
这将根据
strno
54009的date
选择最大记录,它是matno
、matu NAME
和date
。该行以相同的matno
和strno
的最大日期扩展,不包括我们已经选择的日期(几乎是第二个最大日期)。我不需要所有日期,我只需要显示我以前的日期数据。我希望以前的日期显示在列标题“previous\u date”下@user3202126我扩展了我的答案;)感谢您的努力,我尝试了上面的查询,但我面临下面的错误。FROM子句中的语法错误。描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的详细信息以及错误在代码中的起源。您的问题已标记,但语法看起来像T-SQL。您正在使用哪些RDBMS?
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