TSQL 2008 R2Выбрать верхние N строк из таблицы колонки, содержащей N
У меня есть элементы повторяющиеся строки каждый со своим уникальным ID для данного PO #. Мне нужно УДАЛИТЬ дубликаты. Я не знаю, сколько дубликатов у меня есть для каждого PO #. Потому что есть #LineItems, которые я знаю, мне нужны только первые (верхние) позиции x (#lineIems).
У меня есть таблица, например, так:
LineitemID PO# #LineItems
---------- ------- ----------
11111111 12345 3
22222222 12345 3
33333333 12345 3
44444444 12345 3
55555555 12345 3
66666666 12345 3
77777777 54321 2
88888888 54321 2
99999999 54321 2
10101010 54321 2
...
мне нужен стол, как это:
LineitemID PO# #LineItems
---------- ------- ----------
11111111 12345 3
22222222 12345 3
33333333 12345 3
77777777 54321 2
88888888 54321 2
...
Так в основном есть способ сделать что-то вроде этого:
DECLARE @top int = (SELECT TOP 1 FROM tblLineItems t WHERE t.PO# = @PO)
SELECT TOP (@top)
FROM tblLineItems
И сделайте это за каждый PO #
Благодаря @LittleBobbyTables. Ты просто написал то, что думал! EDIT: комментарий Previoius удален - так coudl вы объясните, пожалуйста, ваш желаемый результат? Почему линии 4444444, 5555555, 666666 ушли? Какое ваше заслуженное правило для устранения линий? Где po # 43125 на линии 888888? – Nico
О, я вижу, что вы пытаетесь сделать сейчас. @Nico - столбец LineItems определяет, сколько строк возвращается на PO #. Archangel33, Когда вы говорите «исключить», вы имеете в виду «Исключить из запроса» или «удалить из таблицы»? – LittleBobbyTables
@LittleBobbyTables Если LineItems описывает, сколько строк возвращается на PO # - где находятся 2 строки с LineitemID 7777777 и 888888 в необходимой таблице OP? – Nico