Вложенная группировка

Миша Киевский
Дата: 03.02.2009 14:54:13
Допустим, у нас есть таблица

create table tbl1
(
  fld1 int,
  fld2 int,
  dt1  datetime)

Задача: выбрать fld1 и пару fld2-dt1 с максимальным dt1.

Сходу придумал только

select distinct a.fld1, (select fld2, max(dt1) from tbl1 b where b.fld1=a.fld1 group by b.fld2) from tbl1 a

Может есть лучше вариант?
iap
Дата: 03.02.2009 15:00:10
Миша Киевский,

и это выполняется?!
Миша Киевский
Дата: 03.02.2009 15:02:26
Пардон,
select a.fld1, (select top 1 fld2,dt1 from tbl1 b where b.fld1 = a.fld1 order by b.dt1 DESC) from tbl1 a
iap
Дата: 03.02.2009 15:05:14
Миша Киевский
Пардон,
select a.fld1, (select top 1 fld2,dt1 from tbl1 b where b.fld1 = a.fld1 order by b.dt1 DESC) from tbl1 a
А Вы проверяете свои запросы или только теоретически их придумываете?
Как может быть коррелированный подзапрос в списке полей SELECTа, возвращающий два поля, а не одно?
И версия сервера неизвестна, а это принципиально.
Миша Киевский
Дата: 03.02.2009 15:10:15
Опять извиняюсь, я просто переписываю реальный запрос в абстрактный
в коррелированном подзапросе только первое поле, без поля даты.
Gluck_13
Дата: 03.02.2009 15:11:07
Миша Киевский,

примерно так:

select T1.fld1, xxx.fld2, xxx.dt1
from tbl1 T1
outer apply (select top 1 fld2, dt1 from tbl1 T2 where T2.fld1 = T1.fld1 order by dt1 desc) as xxx