Используя T-SQL (SQL Server 2008 R2), я пытаюсь перечислить только строки со вторым самым высоким значением в конкретном столбце из таблицы temp, а затем поместить результаты в новую временную таблицу. ПК представляет собой ID
, который может иметь увеличенные номера версий, а затем уникальные коды.Выделить все самые последние значения только из временной таблицы
Пример:
ID | Name| Version | Code
------------------------
1 | A | 1 | 10
1 | A | 2 | 20
1 | A | 3 | NULL
2 | B | 1 | 40
2 | B | 2 | 50
2 | C | 1 | 60
Желаемый результат запроса является
ID | Version | Code
------------------------
1 | 2 | 20
2 | 1 | 40
Для достижения этой цели мне нужно ниже запрос, чтобы быть адаптированы, чтобы вытащить второе наивысшее значение до тех пор, как результат дает номер версии больше 1. Эти результаты исходят из таблицы temp и затем будут помещены в таблицу результатов окончательных результатов. EDIT: обратите внимание, что это будет применяться к 33000 рядам данных, поэтому я предпочел бы что-то более аккуратное, чем INSERT VALUES. Благодарю.
Текущий запрос:
SELECT
ID
,Version
,Code
INTO
#table2
FROM
#table1
SELECT *
FROM #table2
WHERE Version > 1
ORDER BY ID asc
DROP TABLE #table1
DROP TABLE #table2
Я попытался запустить, где положение WHERE Version < (SELECT MAX(VERSION) FROM #TABLE 2)
, но это не имеет никакого эффекта, предположительно из-за уникальные кодовые значения и в любом случае не будет работать там, где у меня есть более чем 3 Версии.
Идеи были бы с благодарностью получены.
Заранее спасибо.
Благодарим вас за решение, но, к сожалению, не практично из-за объема данных, с которыми я имею дело в действительности (33000 строк). Я обновил вопрос. – TJB
Как за вами стол вы можете попробовать это: ВЫБРАТЬ ID, Имя, [Version] Код FROM ( \t ВЫБРАТЬ ID, Имя, [Version], код, ROW_NUMBER() OVER (PARTITION BY NAME ORDER BY [ Версия] DESC) AS RNK \t FROM [Ваше имя таблицы] ) base WHERE RNK = 2 –
Spot on - это было решение, которое я адаптировал к моему желаемому результату (вместо этого разбиение на версии). Большое спасибо. – TJB