如何实现返回与提供的日期最近的记录的SQL查询?

时间:2016-08-29 15:12:04

标签: sql sql-server database sql-server-2008 rdbms

我不是那么进入数据库而且我在 Microsoft SQL Server 数据库上工作时遇到以下问题。

我有一个名为 RendimentiGS 的表,其中包含如下信息:

 ID    FondoID     DataRiferimento       Rendimento     
1651    ISPAI    2015-05-01 00:00:00      2.99000   
1652    ISPAI    2015-06-01 00:00:00      3.04000   
1653    ISPAI    2015-07-01 00:00:00      3.00000       
1654    ISPAI    2015-08-01 00:00:00      2.85000   

1655    ISPAI    2015-09-01 00:00:00      0.00000       
1656    ISPAI    2015-10-01 00:00:00      0.00000       
1657    ISPAI    2015-11-01 00:00:00      0.00000   
1658    ISPAI    2015-12-01 00:00:00      0.00000   

因此,正如您在上表示例中所看到的,字段 Rendimento 包含一些值不同于0的数据,后跟其他值为0的数据。

值得注意的是,从特定记录中,以下 0.00000 作为 Rendimento 字段的值。

特别是在前一种情况下,在此记录之后:

1654    ISPAI    2015-08-01 00:00:00      2.85000   

以下所有记录将 0.00000 作为 Rendimento 字段的值。

现在我必须实现一个查询,该查询给出 0.00000 的记录的日期(与 DataRiferimento 字段相关)作为 Rendimento的值字段返回 Rendimento 字段的最后一条记录,其值与 0.00000 不同。

例如:

指定 2015-12-01 00:00:00 的日期与 0.00000 作为 Rendimento 的值的记录相关领域。它返回此记录:

1654    ISPAI    2015-08-01 00:00:00      2.85000   

这是"最近的" (与 DataRiferimento 字段相关)记录 Rendimento 字段与 0.00000 不同。

实现这样的查询最聪明的方法是什么?

1 个答案:

答案 0 :(得分:0)

自己解决:

SELECT TOP 1 * from RendimentiGS 
where FondoID = 'ISPAI' and Rendimento != 0 and DataRiferimento < '2016-02-01'
ORDER BY DataRiferimento DESC