В один селект

пак и пак
Дата: 04.12.2009 00:02:10
create table aa
(
dt datetime,
val1 int,
val2 int
)

insert into aa values
(0, 1, 2),
(1, 1, 3),
(2, 1, 4),
(3, 2, 1),
(4, 2, 2)

select * from aa

-- первый вариант

select dt, val1 from (
select *,MAX(val2)over(partition by val1)v from aa
)x where val2=v

-- второй вариант

select dt, aa.val1 from aa join
(
select val1, MAX(val2) val2
from aa
group by val1
)x on aa.val1=x.val1 and aa.val2=x.val2

drop table aa

как в один запрос выбрать то же самое что сделано в два - выбрать дату для каждого val1 имеющего максимальный val2 в своей группе.

туплю..
_Alex_SMIRNOV_
Дата: 04.12.2009 00:17:50
SELECT val1, 
       MAX(dt) KEEP (DENSE_RANK LAST ORDER BY val2)
FROM aa
GROUP BY val1

P.S. А вы случайно веткой не промахнулись... может вам в MSSQL?
_Alex_SMIRNOV_
Дата: 04.12.2009 00:27:19
ОФФ: массовая подзапрософобия )))
пак и пак
Дата: 04.12.2009 00:44:54
_Alex_SMIRNOV_,

Да, я там тоже спросил.. вот решил узнать как в Оракле все это :)
SY
Дата: 04.12.2009 01:06:18
пак и пак
Да, я там тоже спросил.. вот решил узнать как в Оракле все это :)


Much better that in SQL server 2005 which does not allow running window on functions that are both analytic and aggregation. I am not even talking about not having unbounded preceding/following, current row, rows/range, KEEP, etc.

SY.