当SQL中的日期不连续时,选择前一条记录的日期



我在一个过程中的游标中使用了下面的SELECT语句。

SET @chng = (   SELECT Tcle - cls 
                FROM dly
                WHERE dt = SUBDATE(Tdt, INTERVAL 1 DAY);
                AND dly.nms_id = Tnms_id);

Tdt为当前记录的日期。

问题是我的表中的记录没有连续的日期。因此,记录将有日期'11-01-2010',然后'12-01-2010',然后'15-01-2010 ',由于周末之间。

这就是我的SELECT语句有缺陷的地方,好像它在'15-01-2010 '上运行为Tdt,然后:

WHERE dt = '14-01-2010'

但是我想让它选择以前的记录日期:

WHERE dt = '12-01-2010'

那么有一种方法来选择以前的记录日期吗?

在这种情况下,我将取日期早于指定日期的所有行,按日期列降序排序,然后只取最后一行,如下所示(对当前语句的必要更改突出显示):

SET @chng = (   SELECT Tcle - cls 
                FROM dly
                WHERE dt < Tdt
                AND dly.nms_id = Tnms_id
                ORDER BY dt DESC
                LIMIT 1);

使用下面的查询

SELECT MAX(cls)从海底WHERE t <负2和海底。nms_id>

最新更新