ОК, я немного тренируюсь по SQL-запросам здесь, у меня есть таблица с тысячами записей. Каждая строка имеет уникальный идентификатор, но есть столбец с именем EquipmentId, который не является уникальным и будет присутствовать в нескольких строках. Я хочу вернуть 3 строки для каждого EquipmentId, и если есть меньше 3 записей для EquipmentID, я тоже хочу их. ..... смысл? заранее спасибо.Sql Query, чтобы вернуть 3 строки для каждой записи с тем же значением в столбце?
1
A
ответ
2
Использование ROW_NUMBER()
+
CTE
;WITH CTE AS(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY EquipmentId ORDER BY ID) RN
FROM TableName
)
SELECT *
FROM CTE
WHERE RN <= 3
ORDER BY EquipmentId
0
Использование подзапросов Вы можете сделать это следующим образом:
SELECT *
FROM
(SELECT *, Rank()
OVER
(PARTITION BY equipmentid
ORDER BY ID) Rank
FROM stack) AS a
WHERE
rn <= 3
Какие СУБД вы используете? (Ответ может зависеть от продукта, который вы используете.) – jarlh
@ Ultrazz008, это не (ANSI) SQL, или правильный ответ. – jarlh
MS SQL Server Management Studio – mkell