查询中的数据排序

Xav*_*ver 1 sorting sql-server-2005

我使用SQL Server 2005.我有一个表格,其中FK:两列(book number, bookshelf number).PK = FK + Datetime列.而且我还有价值栏.我想创建查询,按如下方式对数据进行排序.

我有这个数据集:

BookNumber   BookshelfNumber          DateTime          Value
    0              0             12.01.2012 14:40:42      4
    0              0             12.01.2012 14:45:42      5
    0              0             12.01.2012 14:48:42      9
    0              1             12.01.2012 14:38:42      1
    0              1             12.01.2012 14:42:42      4
    0              1             12.01.2012 14:48:42      1
    1              1             12.01.2012 14:38:42      5
    1              1             12.01.2012 14:48:42      7
    1              1             12.01.2012 14:58:42      4
Run Code Online (Sandbox Code Playgroud)

查询后我想要这个结果:

BookNumber   BookshelfNumber          DateTime          Value
    0              0             12.01.2012 14:40:42      4
    0              1             12.01.2012 14:38:42      1
    1              1             12.01.2012 14:38:42      5
Run Code Online (Sandbox Code Playgroud)

Lie*_*ers 5

您可以使用ROW_NUMBER函数向数据集添加数字

  • Booknumber & BookshelfNumber(PARTITION BY)中的每次更改重新开始编号
  • 将结果从最旧到最新datetime(ORDER BY)编号

SQL语句

SELECT  *
FROM    (
          SELECT  BookNumber
                  , BookShelfNumber
                  , DateTime
                  , Value
                  , rn = ROW_NUMBER() OVER (PARITION BY BookNumber, BookshelNumber ORDER BY DateTime)
          FROM    Books
        ) b
WHERE   rn = 1
Run Code Online (Sandbox Code Playgroud)