[ТЕМА ЗАКРЫТА]
Опции темы
12.11.2014 12:38
 
Правильно, не надо подзапроса.
Иди гуглить по ключевым словам: group by и having.
12.11.2014 12:52
 
Код:
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
 
Ответ правильный. В принципе, вместо цифры 5 можно и переменную добавить, чтобы сделать этот отчет более универсальным.
Вопросы по этому запросу есть?
12.11.2014 13:28
 
Вопросов нет! пока )))
12.11.2014 13:31
 
Тогда расскажи мне, в чем разница между условием в разделе where и в having?
Коротко и своими словами...
12.11.2014 13:57
 
where работает с перечисленными таблицами после from (smspec sp, smcard crd, smdocuments s), а having работает с результатом сгруппированных строк по средством group by(sp.article, quant, total_$), вроде как то там.
12.11.2014 14:09
 
Не совсем точно. Попробуй еще раз.
12.11.2014 15:56
 
почитал поподробней.
where исключающее условие, которое используется до получения результата, а having - фильтрующее условие, которое используется уже после получения результата.
"Спасибо" BotMan от:
13.11.2014 08:18
 
Угу, если проще: where - фильтр входящих данных, having - фильтр результатов группировки.

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

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


Опции темы



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

Все в прочитанное - Донат - RSS - - Карта - Вверх

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