Lotsia PLM: Форум по семейству систем PLM/PDM/TDM/ERP/Workflow

Для специалистов по внедрению систем, профессиональных администраторов и пользователей.
Текущее время: 17 июл 2018, 07:07

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Помогите с группировкой
СообщениеДобавлено: 15 окт 2009, 15:20 
Не в сети
Активный участник
Аватара пользователя

Зарегистрирован: 24 авг 2006, 08:06
Сообщения: 1646
Откуда: 55.745578,37.665825
Благодарил (а): 8 раз.
Поблагодарили: 3 раз.
не могу сообразить есть короче запрос
Код:
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')

получается таблица где одинаковых объектов с id dCltID может быть несколько но дата изменения dLastDate у каждого своя уникальная
и мне нужно оставить только по одному id из одинаковых - с самой поздней датой (чтобы работать с ними в другом запросе), но - могу сделать только так
Код:
Select   
       vv1.value , max(vv13.value)
  From lsdbo.object_reference rw left join lsdbo.object_type tw on rw.type_id = tw.id 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 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')
 group by vv1.value
 order by  vv1.value
повторяющиеся id уходят остаются с максимальной датой - но не могу добавить в этот запрос атрибуты dNote, dManager - группировка (group by vv1.value,vv2.value,vv3.value) все сразу убивает если больше одного поля
не подскажите как правильно нарисовать запрос?

_________________

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный



Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Помогите с группировкой
СообщениеДобавлено: 16 окт 2009, 14:31 
Не в сети
Активный участник
Аватара пользователя

Зарегистрирован: 24 авг 2006, 08:06
Сообщения: 1646
Откуда: 55.745578,37.665825
Благодарил (а): 8 раз.
Поблагодарили: 3 раз.
Юрий, Андрей - вся надежда на вас :wink: - работа встала чтоб ее :wink:
давайте по другому скажу - попробую проще...
есть типа таблица
Код:
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        date          note                 manager
10      02.03.2009      чего-то там         кто-то там
23      22.01.2009      чего-то там         кто-то там
44      22.01.2009      чего-то там         кто-то там
76      10.01.2009      чего-то там         кто-то там

??? т.е. уникальные id отобранные по максимальной дате

_________________

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный



Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Помогите с группировкой
СообщениеДобавлено: 16 окт 2009, 15:14 
Не в сети
Активный участник
Аватара пользователя

Зарегистрирован: 24 авг 2006, 08:06
Сообщения: 1646
Откуда: 55.745578,37.665825
Благодарил (а): 8 раз.
Поблагодарили: 3 раз.
Вы не поверите - мне ответили на sql.ru!!!!!!!!!!!!!!! :wink:
вот если кому интересно
Код:
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)
я не понял как это работает - но и не заморачиваюсь больше! :wink:

_________________

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный



Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Помогите с группировкой
СообщениеДобавлено: 16 окт 2009, 16:52 
Не в сети
Активный участник
Аватара пользователя

Зарегистрирован: 27 июл 2006, 22:17
Сообщения: 797
Откуда: Москва
Благодарил (а): 11 раз.
Поблагодарили: 12 раз.
Круто! Я уж начал distinct прилаживать...

_________________
"Лучше меньше, да лучше" (C)


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Помогите с группировкой
СообщениеДобавлено: 19 окт 2009, 08:19 
Не в сети
Активный участник

Зарегистрирован: 13 янв 2005, 14:30
Сообщения: 239
Откуда: Украина, Донецк
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
К сожалению это работает только с 2005 сервера. :(


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Помогите с группировкой
СообщениеДобавлено: 19 окт 2009, 11:05 
Не в сети
Активный участник
Аватара пользователя

Зарегистрирован: 24 авг 2006, 08:06
Сообщения: 1646
Откуда: 55.745578,37.665825
Благодарил (а): 8 раз.
Поблагодарили: 3 раз.
ну да...
хотя для меня конечно к счастью, там можно еще как-то сделать типа
Код:
select * from
(Select   
       *, max(date) over(partition by id) max_date
  From ...
) t
where date = max_date
order by id
но наверно это тоже для 2005....

_________________

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный



Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Помогите с группировкой
СообщениеДобавлено: 19 окт 2009, 11:24 
Не в сети
Активный участник

Зарегистрирован: 13 янв 2005, 14:30
Сообщения: 239
Откуда: Украина, Донецк
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Для 2000 подойдет такой запрос
Код:
select set1.* from
(select id, level, max(pos) pos
from dbo.ZadanijaSett
group by id, level) filt
inner join dbo.ZadanijaSett set1 on set1.id=filt.id
and set1.level=filt.level and set1.pos=filt.pos
order by set1.id, set1.level, set1.pos


Во вложенном запросе мы получаем ключевые поля, а затем фильтруем по ним исходную
таблицу в этом случае поле pos является аналогом твоей даты.


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB