Сортировка данных в запросе - PullRequest
1 голос
/ 30 января 2012

Я работаю с 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

После запроса мне нужен этот результат:

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

1 Ответ

5 голосов
/ 30 января 2012

Вы можете использовать функцию 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...