chints786 Ответов: 2

Sql-запрос для поиска результатов


Привет,

У меня есть данные в приведенном ниже формате:-

Col1 	Col2	Col3
Path1	A1	Value1
Path1	A1	Value2
Path1	A1	Value3
Path1	A1	Value4
Path1	A1	Value5
Path1	A2	Value6
Path1	A2	Value7
Path1	A2	Value8
Path1	A2	Value9


Мне нужен вывод в следующем формате:-

Col1 	Col2	Col3
Path1	A1	Value1
Path1	A1	Value2
Path1	A2	Value6
Path1	A2	Value7


Короче говоря,для каждого пути и для каждого уникального значения Col2 (A1, A2) нам нужно выбрать любые 2 значения из col3.

Что я уже пробовал:

Пробовали использовать row_number использование функции разделения по и ранжирования но безуспешно

Herman<T>.Instance

Покажите код, чтобы увидеть, что вы сделали

2 Ответов

Рейтинг:
1

Richard MacCutchan

Видеть SQL SELECT TOP, LIMIT, ROWNUM[^].


chints786

Не работать

Herman<T>.Instance

А почему бы и нет?

phil.o

Пожалуйста, покажите, что вы на самом деле пробовали, вместо расплывчатого описания, и вы можете получить более подробные ответы. Используйте зеленый цвет Улучшить вопрос виджет, который появляется при наведении курсора на ваш вопрос, если уж на то пошло.

Richard MacCutchan

Тогда ваш код должен быть неправильным.

Рейтинг:
0

Maciej Los

Попробовать это:

DECLARE @tmp TABLE(Col1 NVARCHAR(100), Col2 NVARCHAR(100), Col3 NVARCHAR(100))

INSERT INTO @tmp(Col1, Col2, Col3)
VALUES('Path1', 'A1', 'Value1'),
('Path1', 'A1', 'Value2'),
('Path1', 'A1', 'Value3'),
('Path1', 'A1', 'Value4'),
('Path1', 'A1', 'Value5'),
('Path1', 'A2', 'Value6'),
('Path1', 'A2', 'Value7'),
('Path1', 'A2', 'Value8'),
('Path1', 'A2', 'Value9')


SELECT Col1, Col2, Col3
FROM (
	SELECT Col1, Col2, Col3, ROW_NUMBER() OVER(PARTITION BY COl2 ORDER BY Col1, Col2) AS RowNo  
	FROM @tmp) AS T
WHERE T.RowNo IN (1, 2)

Результат:
Col1	Col2	Col3
Path1	A1	Value1
Path1	A1	Value2
Path1	A2	Value6
Path1	A2	Value7


Примечание: есть несколько других способов решить вашу проблему.