Страница 1 из 1

Кто может помочь с запросом

Добавлено: 19 апр 2007, 13:22
Alexey
Есть объект допустим(ID=100000) с подчиненными объектами одного типа у них есть следующие атрибуты ( цена (число) , дата (дата) , исполнитель (строка). Требуется:
1. Отобрать все объекты удовлетворяющие условию дата < некой дата например 21.01.2007, и просуммировать все цены полученной выборки.
2. Отобрать все объекты где исполнитель будет = например 'Фирма', и также просуммировать все цены.
3. Совмещенный запрос где выборка дата + исполнитель итог сумма цен!

Кто может помочь помогите....

Добавлено: 19 апр 2007, 19:29
Старик Крупский
Выполните подобный запрос, например, в окне поиска объектов. А в профайлере или чем Вы там пользуетесь, перехватите запрос. Потом его немного модернизируете. Придется убрать лишние поля и таблицы, т.к. окно поиска возвращает кучу всего.

Добавлено: 23 апр 2007, 10:13
Alexey
Большое спасибо все получилось...

Добавлено: 24 апр 2007, 06:25
Александр
нескромный вопрос- а как получилось посчитать сумму? у меня не получилось, в MSSQL2000 следующая структура не работает
Select
sum(select ... найти в выбранном)
From
...
Where
дата<даты
исполнитель=исполнитель
цена is not null

т.е. если без SUM то получаем колонку с ценами, а если пытаться ее просуммировать - вылезает ошибка что Sum не работает с вложенными подзапросами :roll:
... а какая база использовалась?

Добавлено: 25 апр 2007, 20:50
Старик Крупский
Я бы документацию по MS SQL почитал... Там наверняка синтакис функции SUM изложен.

Добавлено: 27 апр 2007, 15:56
Alexey
MS SQL Server 2000
и все чере Sum считается, вот запрос который просчитал суммы и все такое если будет что то не понятно пишите:
str_SQL1 = Set ( ' SELECT Sum (vnp.value) FROM LSDBO.tree_link_view tl, lsdbo.value_numeric_view vNP, lsdbo.attrib_value_view aNP WHERE tl.parent_id = ' + id + ' and tl.link_type_id = 1 and tl.link_id= anp.object_id and anp.attrib_id = 100000022600001[атрибиут по которому считается сумма] and vnp.attrib_id = 100000022600001[атрибиут по которому считается сумма] and anp.value_id =vnp.id and anp.object_id in (SELECT av.object_id FROM lsdbo.attrib_value_view av, lsdbo.value_datetime_view vv WHERE av.value_id = vv.id and av.attrib_id = 100000028000001[дата] and vv.attrib_id = 100000028000001[дата] AND vv.Value < ~''+ str_Date +'~' ) ' )

Я думаю он не идеален, но главное работает. В квадратных скобках некоторый комментарий.