всегда получаю исключение "не выражение GROUP BY" - PullRequest
0 голосов
/ 27 августа 2018

С выбранной частью все в порядке, я могу запустить ее и получить результат, но если я вставлю результат запроса в таблицу, возникнет исключение «не по выражению», см. Мой оператор sql ниже:

INSERT INTO RAWDATA_FACT 
                     (
                         LINEITEMID
                        ,CALENDARYEAR
                        ,CALENDARQUARTER
                        ,CALENDARMONTH
                        ,DEPARTMENTID
                        ,PRODUCTID
                        ,DEALERID
                        ,ACTUALVALUE
                        ,TARGETVALUE
                        ,AGGREGATION
                        ,TODATE

                        ,CREATEDATE
                        ,BATCH_ID
                     )      
select  parentid
                            ,calendaryear
                                      ,calendarquarter 
                                      ,calendarmonth 
                                      ,departmentid
                                      ,productid
                                      ,dealerid
       ,sum(case when unaryoperator = '-' then actualvalue * (-1)
                 when unaryoperator = '~' then actualvalue * 0
                 else actualvalue
            end
                                                     ) actualvalue
       ,sum(case when unaryoperator = '-' then targetvalue * (-1)
                 when unaryoperator = '~' then targetvalue * 0
                                                       else targetvalue
                                           end
                                                     ) targetvalue

                                      ,aggregation
                                      ,todate

                                      ,sysdate createdate
                                      ,'201808' batch_id--v_batch_ID
                     from 
                     (
                                   select   
                                            x.parentid
                                                     , x.unaryoperator
           , y.calendaryear
                                                     , y.calendarquarter
                                                     , y.calendarmonth
                                                     , y.departmentid
                                                     , y.productid 
                                                     , y.dealerid
                                                     , y.actualvalue
                                                     , y.targetvalue
                                                     , y.aggregation
                                                     , y.todate
                                   from
                                                  (select substr(lineitemid,instr(lineitemid,'_')+1) lineitemid, 
                                                                              parentid, unaryoperator from lineitem_temp where levelid = 14 /*v_cur_level*/) x
                                   inner join

                                                  (select lineitemid,calendaryear, calendarquarter, calendarmonth, departmentid, productid, dealerid,
                                                                              coalesce(actualvalue,0) actualvalue,coalesce(targetvalue,0) targetvalue,
                                                                   aggregation, todate
                                                                   from RAWDATA_FACT where BATCH_ID = '201808'/*v_batch_ID*/) y --eg. 201809
                                   on x.lineitemid = y.lineitemid 
                                    --parent node's id contains "_" will not take part in calculation from current level to parent level
                                   where regexp_like(x.parentid , '^\d+$') and not exists
                                   --parent node contains formula will not participate calculation from current level to parent level
                                   (select 1 from LINEITEM_TEMP where lineitemid = x.parentid and custommember is not null)
                     ) t
                     GROUP BY 
                          t.parentid
                        , t.calendaryear
                        , t.calendarquarter
                        , t.calendarmonth
                        , t.departmentid
                        , t.productid
                        , t.dealerid
                        , t.aggregation
                        , t.todate
                     ;

кто может сказать мне, почему?Есть ли способ вставить результат в эту таблицу?Если я запускаю выбранные части, он работает нормально, но если я хочу вставить результат в эту таблицу, он сообщает об этом исключении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...