я следующую таблицу:SQL разделов сервера путем дает повторяющиеся записи
Date | ID | firstname
---------+----+------------
20161128 | 1 | Adam
20161128 | 2 | Steve
20161128 | 2 | Steve
20161128 | 3 | Aaron
20161129 | 1 | Adam
20161129 | 2 | Steve
20161129 | 2 | Steve
20161129 | 3 | Aaron
Я хочу, чтобы получить первую строку по идентификатору для одной конкретной даты.
Так что у меня было:
SELECT *
FROM tableA
WHERE Date = 20161128
это, однако, дает все записи. Поэтому я использовал раздел по функции:
SELECT
*,
row_number() over(partition by ID order by Date desc)
FROM tableA
WHERE Date = 20161128
В этом случае я получаю следующий результат:
Date | ID | firstname | rownum
---------+----+-----------+-------
20161129 | 1 | Adam | 1
20161129 | 1 | Adam | 2
20161129 | 2 | Steve | 1
20161129 | 2 | Steve | 2
20161129 | 2 | Steve | 3
20161129 | 2 | Steve | 4
20161129 | 2 | Steve | 5
20161129 | 2 | Steve | 6
20161129 | 3 | Aaron | 1
20161129 | 3 | Aaron | 2
Как вы можете видеть, большинство идентификаторов появляются в 2 раза. (ID 2 даже появляется 6 раз). В других случаях я вижу, что запись появляется 10 раз, даже если у нее будет только одна запись, если бы я использовал первый запрос.
Любая идея, почему это происходит и как это можно устранить? Мое предположение было бы предложением date/where, но я не вижу, как это может сильно повлиять на результат.
Вы можете посмотреть на [ 'TOP'] (https://msdn.microsoft.com/en- нас/библиотека/ms189463.aspx). – HABO