SQL查询以块方式获取最新数据

时间:2014-09-17 02:36:17

标签: sql sql-server

我想根据日期获取每个Block(行)的最新数据。但如果今天的日期数据不可用,那么之前的日期。我从链接下面的stackoverflow得到了一个答案。但查询是在Mysql中我需要在MSSQL中进行类似的查询。在我的情况下,今天可用的数据块很少,但是对于其他不可用的块。因此,我需要所有块的数据,而这些块中的块数据不可用,我需要从之前的日期开始。

retrieve the last inserted row from each user in database

SELECT *
FROM (
    SELECT
        Users.*,
        CASE WHEN @lst=User THEN @row:=@row+1 ELSE @row:=0 END row,
        @lst:=User
    FROM
        Users
    WHERE
        User IN ('ina','chris','john')
    ORDER BY
        User, Date_ins DESC
) s
WHERE
    row=0

先谢谢。

1 个答案:

答案 0 :(得分:1)

SQL Server等效项将使用row_number()

select u.*
from (select u.*, row_number() over (partition by user order by date_ins desc) as seqnum
      from users u
      where u.User IN ('ina','chris','john')
     ) u
where seqnum = 1;