|
|
|
Forum Member
      
участник
Last Login: 06.12.2007 13:35
Сообщ.: 29,
Visits: 287
|
|
Нужно написать запрос, результатом которого будет выборка уникальных значений "Поле1" да так, что среди равных будут выбраны строки с наибольшим значением в "Поле2". Данные такого плана: Поле1 Поле2 Поле3
(int) (Data) (int) _____________________ 1 3/05/06 2 1 2/05/06 27 1 1/05/06 60 2 8/05/06 3 2 6/05/06 10 2 5/05/06 32 2 1/05/06 32 3 8/05/06 18 3 3/05/06 2 _____________________ Нужно получить: Поле1 Поле2 Поле3
(int) (Data) (int) _____________________ 1 3/05/06 2 2 8/05/06 3 3 8/05/06 18 _____________________ Всю голову уже сломала. Может все проще чем я думаю? :) Вобщем, прошу помощи.
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 29.10.2007 14:45
Сообщ.: 1 833,
Visits: 16 863
|
|
| Ну например так... хотя есть еще несколько вариантов. Кроме того, у ва сничего не сказано про поле 3, что делать, если, например, есть две записи с одинаковыми первым и вторым полем? SELECT fld1, max(fld2), (SELECT TOP 1 fld3 FROM aaa a2 WHERE a1.fld1=a2.fld1 AND Max(a1.fld2)=a2.fld2) FROM aaa a1 GROUP BY fld1
|
|
|
|
|
Forum Member
      
участник
Last Login: 06.12.2007 13:35
Сообщ.: 29,
Visits: 287
|
|
| Первые 2 поля определяют уникальность записи. Фактически, это составной ключ.
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 29.10.2007 14:45
Сообщ.: 1 833,
Visits: 16 863
|
|
| Вот еще как вариант: SELECT a2.* FROM ( SELECT fld1, max(fld2) fld2 FROM aaa GROUP BY fld1 ) a1 INNER JOIN aaa a2 ON a1.fld1=a2.fld1 and a1.fld2=a2.fld2 Стоимость этого запроса (cost) = 0.01468, предыдущего = 0.01801
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 29.10.2007 14:45
Сообщ.: 1 833,
Visits: 16 863
|
|
| Ну тогда Вам решать какой будете использовать. От себя могу сказать, что я бы использовал второй.
|
|
|
|
|
Forum Member
      
участник
Last Login: 06.12.2007 13:35
Сообщ.: 29,
Visits: 287
|
|
| Супер! Спасибо :) Второй самое то :) Меня явно не в ту сторону унесло, я зачем то с distinct-ом делала выборку по первому полю и у меня как раз не то что надо попадало :).
|
|
|
|