[ТЕМА ЗАКРЫТА]
Опции темы
12.11.2014 12:38  
Mtirt
Правильно, не надо подзапроса.
Иди гуглить по ключевым словам: group by и having.
 
12.11.2014 12:52  
BotMan
Код:
select  sp.article, 
                             sum(case 
                              when trim(sp.doctype) = 'CS' then sp.quantity 
                               when trim(sp.doctype) = 'CR' then -sp.quantity 
                                end ) as quant,
                             sum(case 
                              when trim(sp.doctype) = 'CS' then sp.totalprice
                               when trim(sp.doctype) = 'CR' then -sp.totalprice
                                end)  as total_$

from smspec sp, smcard crd, smdocuments s

where sp.doctype IN ('CS', 'CR')
and s.id=sp.docid
and sp.doctype = s.doctype
and (s.createdat between '&date1' and '&date2')
and sp.article = crd.article
and crd.idclass in (select idclass from sacardclass where tree like '1.%')
group by sp.article
having                     sum(case when trim(sp.doctype) = 'CS' then sp.quantity 
                               when trim(sp.doctype) = 'CR' then -sp.quantity 
                                end ) < 5
 
"Спасибо" BotMan от:
12.11.2014 13:01  
Mtirt
Ответ правильный. В принципе, вместо цифры 5 можно и переменную добавить, чтобы сделать этот отчет более универсальным.
Вопросы по этому запросу есть?
 
12.11.2014 13:28  
BotMan
Вопросов нет! пока )))
 
12.11.2014 13:31  
Mtirt
Тогда расскажи мне, в чем разница между условием в разделе where и в having?
Коротко и своими словами...
 
12.11.2014 13:57  
BotMan
where работает с перечисленными таблицами после from (smspec sp, smcard crd, smdocuments s), а having работает с результатом сгруппированных строк по средством group by(sp.article, quant, total_$), вроде как то там.
 
12.11.2014 14:09  
Mtirt
Не совсем точно. Попробуй еще раз.
 
12.11.2014 15:56  
BotMan
почитал поподробней.
where исключающее условие, которое используется до получения результата, а having - фильтрующее условие, которое используется уже после получения результата.
 
"Спасибо" BotMan от:
13.11.2014 08:18  
Mtirt
Угу, если проще: where - фильтр входящих данных, having - фильтр результатов группировки.

Продолжать будем?
Давай попробуем переделать последний запрос так, чтобы увидеть реализацию в динамике: по дням недели, по неделям, или помесячно.
 
"Спасибо" Mtirt от:
13.11.2014 10:02  
BotMan
Цитата:
Сообщение от Mtirt
Угу, если проще: where - фильтр входящих данных, having - фильтр результатов группировки.

Продолжать будем?
Давай попробуем переделать последний запрос так, чтобы увидеть реализацию в динамике: по дням недели, по неделям, или помесячно.
подсказочку можно, куда копать?
 
 


Опции темы



Часовой пояс GMT +3, время: 11:15.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.