05.10.2012 17:55
Поставлена задачка написать отчет где по горизонтали должен выводится доход по выбранной группе в разрезе месяцев. Т.е если поставлена дата с 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
не знаю объема БД, но один раз лет много назад была аналогичная задача, только по дням, кажется. собрал. этот монстр выжрал весь темп или анду десятками гигабайт (база была достаточно большая, а столбцов было много). поэтому я переделал и именно по месяцам запускал потом куски запроса. тут, кстати, где-то валялось, отчет "Марина" или вроде того.
05.10.2012 18:05
база щас на обрезке до 2009 года. Будут смотреть думаю максимум за два года. Этот отчет должен в хранилище быть?
Что то не могу найти этот отчет!
05.10.2012 19:40
https://olegon.ru/showthread.php?t=845, правда не знаю, работает ли он. я еще на 8i его писал
05.10.2012 20:03
Спасибо, покапаюсь в нем там видно будет.

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

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