05.10.2012 17:55
didinap
 
Поставлена задачка написать отчет где по горизонтали должен выводится доход по выбранной группе в разрезе месяцев. Т.е если поставлена дата с 10.10.2010 до 11.11.2011 то выводилась бы доходность для данной группы/товару на каждый месяц в течении данной даты.


Это вырезка из отчета Profit_goods для версии 1.029.1.
Как нарезать на месяцы не пойму.
Не создавать же отдельный запрос для каждого месяца.

SQL код:
    sql_sub := 'insert into supermag.TTArticleDateProfit' || 
              
' (locid,article,forcmap,saledate,sum_notax,cp_notax)' || 
' select LOC_VAL,'||
              
'crd.article,' || 
        
'decode(crd.datatype,1,0,' || supermag.RepTools.LocString(20,'m') || ') forcmap' || 
         
s_dat   || ' dat,' || 
        
'round(sum(decode(m.salelocationto,null,1,-1)*SUM_SPEC),' || SetSum.round_sum || ') sumspec_notax,' ||   
        
'round(sum(decode(m.salelocationto,null,1,-1)*SUM_CP),'   || SetSum.round_sum || ') cp_notax' ||  
' from supermag.smcard crd,' ||           'supermag.' || supermag.RepTools.GetMapRepTbl(:P_FirstDate,:P_LastDate) || ' m' ||
    
' where m.saleop in ('   || SetSum.s_op_buyer_out   || ',' || SetSum.s_op_buyer_in   || ')' ||   
  
' and m.saletype in (' || SetSum.s_type_buyer_out || ',' || SetSum.s_type_buyer_in || ')' ||
  
' and m.saledate between ' || supermag.Rep_Date(:P_FirstDate) ||  
                     
' and ' || supermag.Rep_Date(:P_LastDate) ||
      
' FORCMAP_WHERE' ||  
  
' and crd.article=m.article' || 
        
supermag.RepTools.ClassString(4,'m') || 
        
supermag.RepTools.LocString(0,'nvl(m.salelocationfrom,m.salelocationto)') ||
' group by LOC_VAL,crd.article,decode(crd.datatype,1,0,' || supermag.RepTools.LocString(20,'m') || ')' || s_dat
05.10.2012 18:03
OlegON
 
не знаю объема БД, но один раз лет много назад была аналогичная задача, только по дням, кажется. собрал. этот монстр выжрал весь темп или анду десятками гигабайт (база была достаточно большая, а столбцов было много). поэтому я переделал и именно по месяцам запускал потом куски запроса. тут, кстати, где-то валялось, отчет "Марина" или вроде того.
05.10.2012 18:05
didinap
 
база щас на обрезке до 2009 года. Будут смотреть думаю максимум за два года. Этот отчет должен в хранилище быть?
Что то не могу найти этот отчет!
05.10.2012 19:40
OlegON
 
https://olegon.ru/showthread.php?t=845, правда не знаю, работает ли он. я еще на 8i его писал
05.10.2012 20:03
didinap
 
Спасибо, покапаюсь в нем там видно будет.

Там ексе файл. Мне надо чтоб вставить в отчет. может сохранился код?
05.10.2012 20:47
OlegON
 
очень сомнительно, увы :(
06.10.2012 03:15
didinap
 
кстати он чего то не заработал если что.
Ладно подождем, может еще кто поставит на путь истинный:)
06.10.2012 11:16
Mtirt
 
А зачем так-то?
В Бизнес-Анализе этот отчет делается в пару кликов мышью.
Причем именно в разрезе месяцев.
06.10.2012 11:57
didinap
 
Да, знаю. Там еще в этот отчет надо впихнуть многое. Все это в бизнес анализе выводится за два раза. Но клиент почему то настаивает именно на отчете.
06.10.2012 12:06
Mtirt
 
В своем отчету saledate заменяешь на month(saledate), по нему же добавляешь группировку.
Должно работать...
Часовой пояс GMT +3, время: 07:34.

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