Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 помогите с группировкой  [new]
ef1
Member

Откуда: Москва
Сообщений: 188
есть таблица
id        date           note                 manager
10      01.03.2009      чего-то там         кто-то там
10      02.03.2009      чего-то там         кто-то там
23      22.01.2009      чего-то там         кто-то там
44      22.01.2009      чего-то там         кто-то там
44      20.01.2009      чего-то там         кто-то там
76      10.01.2009      чего-то там         кто-то там 
нужно получить только уникальные id отобранные по наибольшей дате
id        date          note                 manager
10      02.03.2009      чего-то там         кто-то там
23      22.01.2009      чего-то там         кто-то там
44      22.01.2009      чего-то там         кто-то там
76      10.01.2009      чего-то там         кто-то там 
если написать так
Select   
       id , max(date)
  From ...
group by id
order by  id
таблица формируется - но не могу сюда подставить два оставшихся столбца - просто не знаю как синтаксически...

сервер mssql2005
сам исходный запрос такой
Select   
       vv1.value as dCltID,
       vv3.value as dNote,
       vv2.value as dManager,
       vv13.value as dLastDate   
  From lsdbo.object_reference rw left join lsdbo.object_type tw on rw.type_id = tw.id left join
       lsdbo.attrib_value av3 on rw.id = av3.object_id and av3.attrib_id = 3000000000123 left join
       lsdbo.value_string vv3 on av3.value_id = vv3.id and av3.attrib_id = 3000000000123 left join
       lsdbo.attrib_value av1 on rw.id = av1.object_id and av1.attrib_id = 100004081100000 left join
       lsdbo.value_numeric vv1 on av1.value_id = vv1.id and av1.attrib_id = 100004081100000 left join
       lsdbo.attrib_value av2 on rw.id = av2.object_id and av2.attrib_id = 3000000000122 left join
       lsdbo.value_string vv2 on av2.value_id = vv2.id and av2.attrib_id = 3000000000122 left join
       lsdbo.attrib_value av13 on rw.id = av13.object_id and av13.attrib_id = 9 left join
       lsdbo.value_datetime vv13 on av13.value_id = vv13.id and av13.attrib_id = 9
where tw.mnemo in ('Call')
не подскажите - как правильно сделать?
16 окт 09, 16:01    [7797926]     Ответить | Цитировать Сообщить модератору
 Re: помогите с группировкой  [new]
-=DiM@n=-
Member

Откуда: Москва
Сообщений: 1564
Select   TOP 1 WITH TIES
       vv1.value as dCltID,
       vv3.value as dNote,
       vv2.value as dManager,
       vv13.value as dLastDate   
  From lsdbo.object_reference rw left join lsdbo.object_type tw on rw.type_id = tw.id left join
       lsdbo.attrib_value av3 on rw.id = av3.object_id and av3.attrib_id = 3000000000123 left join
       lsdbo.value_string vv3 on av3.value_id = vv3.id and av3.attrib_id = 3000000000123 left join
       lsdbo.attrib_value av1 on rw.id = av1.object_id and av1.attrib_id = 100004081100000 left join
       lsdbo.value_numeric vv1 on av1.value_id = vv1.id and av1.attrib_id = 100004081100000 left join
       lsdbo.attrib_value av2 on rw.id = av2.object_id and av2.attrib_id = 3000000000122 left join
       lsdbo.value_string vv2 on av2.value_id = vv2.id and av2.attrib_id = 3000000000122 left join
       lsdbo.attrib_value av13 on rw.id = av13.object_id and av13.attrib_id = 9 left join
       lsdbo.value_datetime vv13 on av13.value_id = vv13.id and av13.attrib_id = 9
where tw.mnemo in ('Call')
ORDER BY ROW_NUMBER() OVER(PARTITION BY vv1.value ORDER BY vv13.value DESC)
16 окт 09, 16:05    [7797965]     Ответить | Цитировать Сообщить модератору
 Re: помогите с группировкой  [new]
iljy
Member

Откуда:
Сообщений: 8711
ef1,

как вариант:
select * from
(Select   
       *, max(date) over(partition by id) max_date
  From ...
) t
where date = max_date
order by id
16 окт 09, 16:06    [7797967]     Ответить | Цитировать Сообщить модератору
 Re: помогите с группировкой  [new]
ef1
Member

Откуда: Москва
Сообщений: 188
Огромное спасибо!!!!!!!!!!!!!!!!!!!! Все работает!!!!!
16 окт 09, 16:09    [7797987]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить