на основе данных выборки, я считаю, что это то, что вы ищете:
SELECT IDCol
, MIN(Col1) AS [Col1]
, MAX(Col2) AS [Col2]
, Col3
FROM Table
GROUP BY IDCol
, Col3
Основываясь на информации из ваших комментариев, если добавить столбец с номером строки, то одна из решений будет быть в форме:
select t1.idcol
, t1.col1
, t2.col2
, t1.col3
from
(select idcol
, min(rn) over (partition by idcol) first_val
, max(rn) over (partition by idcol) last_val
from table
group by idcol, rn) r
inner join table t1 on r.first_val = t1.rn
and r.idcol = t1.idcol
inner join table t2 on r.last_val = t2.rn
and r.idcol = t2.idcol
group by t1.idcol
, t1.col1
, t2.col2
, t1.col3
Пример кода работает на основе ваших данных выборки:
declare @tbl table (rn int identity(1,1), idcol varchar(4), col1 int, col2 int, col3 int)
insert @tbl values ('id1', 1, 3, 1000)
, ('id1', 6, 6, 1000)
, ('id2', 3, 4, 500)
, ('id2', 1, 7, 500);
select t1.idcol
, t1.col1
, t2.col2
, t1.col3
from
(select idcol
, min(rn) over (partition by idcol) first_val
, max(rn) over (partition by idcol) last_val
from @tbl
group by idcol, rn) r
inner join @tbl t1 on r.first_val = t1.rn
and r.idcol = t1.idcol
inner join @tbl t2 on r.last_val = t2.rn
and r.idcol = t2.idcol
group by t1.idcol
, t1.col1
, t2.col2
, t1.col3
Что вы стремитесь получить? Я не вижу логики возврата данных в запрошенном формате. –
похоже, что вам нужна группа. IDCOL –
Объясните логику – Mihai