New aggregate function in IR

Hi all,
Can we create a new aggregate function in IR instead of using predefined functions? I need to show percentage below each column based on my function returning percentage value. Is there any way to do it?
Thanks
Sunil Bhatia

Hi,
no. You cannot define new aggregate functions in IR which can be used like the predefined ones.
But you can use aggregate functions within your select statement.
brgds,
Peter
Blog: http://www.oracle-and-apex.com
ApexLib: http://apexlib.oracleapex.info
BuilderPlugin: http://builderplugin.oracleapex.info
Work: http://www.click-click.at and http://www.wirsindapex.at

Similar Messages

  • Using aggregate function pulls an additional table in join

    Hello,
    We're facing a wierd scenario whereby using an aggregate function in a report brings an additional table in the query, which should not be included. Please throw some light on this if you have any idea why this would happen. Here are the details
    OBIEE version: 10.1.3.4
    I pull 2 columns in my report - Col1 (numeric column from Dim A), Col2 (date column from Dim B)
    I have already set an implicit fact column in that subject area (Col3 from Fact X)
    Now when I run this report, the FROM clause of the sql correctly shows Dim A, Dim B, Fact X
    Later, I apply a MAX function on Col2 (date column from Dim B). Ideally, the FROM clause of my sql should still be the same. But here is what happens...
    FROM Dim A, Dim B, Fact X, Fact Y (Bridge table).
    Fact Y is a bridge table that we are using in this subject area. But there is no reason why this table should get pulled in this query just by using an aggregate function in it.
    Your thoughts and insights will be highly appreciated.
    Thanks,
    Vahib

    Did you apply MAX in the aggregate function section? If that is the case, OBIEE is forced to consider logical table for Dim B as a fact and brings in Y as a way to resolve the join between two facts.
    Try setting up a new fact and create MAX column there. See if it resolves that problem or not. You may also want to bring Dim B in the LTS of the main fact and create a column with MAX aggregation. That should work too.

  • What does AverageOfChildren aggregate function in SSAS 2005 actually do?

    Folks,
    Have any of you been playing around with SSAS 2005 to have worked out
    what the AverageOfChildren aggregate function actually does?
    I was expecting it to do the equivalent of a simple AVG() with a GROUP
    BY in SQL, but it seems to be doing something additional to that.
    No-one in the team I work in has been able to work out what exactly it
    is doing.
    Any info would be appreciated!
    Cheers,
    Kenneth

    This very question was recently discussed in the public SQL Server OLAP newsgroup:
    http://groups.google.com/group/microsoft.public.sqlserver.olap/msg/c662e201b99678bc
    >>
     Aggregate Function Average of Children does not work
    This behavior could occur because
    AverageOfChildren,FirstChild,LastChild,FirstNonEmpty and LastNonEmpty are
    semi-additive and treats the Time dimension different from the other
    dimensions. Please refer to the following link for details:
    http://msdn2.microsoft.com/en-us/library/ms175356.aspx
    The description in above link (BOL) is not very clear about
    AverageOfChildren, and I have forward this feedback to the proper channel.
    The AverageOfChildren only applys when aggregating via Time dimension.  
    Actually, when you try to create a new measure in cube, when you select
    usage, you could see "average over time" which is for AverageOfChildren.
    To get the result of average behavior you want, you may want define a Sum
    and a Count measure, then create a calculated measure (in the cube script)
    which divides the two base measures.
    >>

  • Coherence aggregate functions

    I am new to coherence.Need help on aggregation.
    I need to get min and max values of cached data using coherence aggregate function.
    the list looks like private static final String[] Data = {"001","002","003","004","005","006","007","008","009"};
    Also, the code I used to get the max value is :
    Double maxAge = (Double)cache.aggregate( new EqualsFilter("00%",Data),
         new DoubleMax("00")
    I am getting only null a result in maxAge.Can you please help me in this.

    918079 wrote:
    I am new to coherence.Need help on aggregation.
    I need to get min and max values of cached data using coherence aggregate function.
    the list looks like private static final String[] Data = {"001","002","003","004","005","006","007","008","009"};
    Also, the code I used to get the max value is :
    Double maxAge = (Double)cache.aggregate( new EqualsFilter("00%",Data),
         new DoubleMax("00")
    I am getting only null a result in maxAge.Can you please help me in this.Hi,
    1. Please go through the JavaDocs of EqualsFilter here
    2. You are trying wildcards in EqualsFilter which is not supported and instead use LikeFilter and details are here
    3. Coherence aggregator/filters functions are used to aggregate/filter data managed in distributed maps and not for local variables.
    4. DoubleMax is an aggregator function that calculates a maximum of numeric values (not Strings) extracted from a set of map entries.
    Here is a simple example:
    NamedCache cache=CacheFactory.getCache("test");          
    HashMap hm=new HashMap();
    for (int i=0; i<50; i++){
    // Inserting double values in the map that will be stored in Coherence Cache
    hm.put("Key"+i, new Double(i+"."+i));
    //Put all the data in the distributed cache
    cache.putAll(hm);               
    // This will look for values in the cache that starts with 1 and return back the max. of them
    Double maxAge = (Double)cache.aggregate( new LikeFilter(IdentityExtractor.INSTANCE,"1%", (char) 0, false),
    new DoubleMax(IdentityExtractor.INSTANCE)
    System.out.println("maxAge: " + maxAge);
    Hope this helps!
    Cheers,
    NJ

  • New preview function for iPad–error message "Multiple page sizes not supported"

    When I try to use the new preview function with my iPad I get the error message "Multiple page sizes within a layout are not supported". I have a page that is 768 x  1296. I would really like to preview this folio before publishing. Any suggestions?

    If you're trying to create an article that scrolls vertically, you can create a 768x1296 article in a 1024x768 folio, but you need to select a Smooth Scrolling option when you create or import the article, or in the Article Properties dialog box.

  • HELP- New VI function does not seem to work in Built Applicatio​n

    My Application is designed to coordinate several (16) separate test stations from one control. The test stations can run independently. I have a Test Manager application that launches independently running Test Runner VIs when the user has selected a test to run and the conditions to run it with. There can be 0 to 16 Test Runner VIs running at any given time. Each Test Runner VI uses the same template Test Runner.VI code but is given a unique Name based on a randomly generated GUID. I use a sequence of the New VI function, VI.FP.Open and VI.Run VI to create the VI based upon the template, give it a unique name and then launch it to run independently. See JPG fragment attached.
    This design works perfectly well when used in the LabView 2010 development environment. But it does not work when I build the Test Manager as an EXE application. There are no errors generated, but the new VI is not launched and I think that one of the functions in the sequence never returns. I am not sure if the New VI is created or not.
    Does anyone know how to modify this so that New VIs can be created, uniquely named and launched, that will work properly no matter whether the creating VI is running in either development (for debugging) or as a built application?
    Does the sequence New VI function, VI.FP.Open and VI.Run VI work when used in a Built application? Is there some other method that will work to serve this need?
    Is there a function in LabView that will launch an exe file like WinExec does? Perhaps I can use that.
    THANKS MUCH for any advice.
    Solved!
    Go to Solution.
    Attachments:
    New VI launch.jpg ‏38 KB

    Are you using any paths in your VI?
    I do see the Application Directory in the image you posted.  Do you have other paths?
    Do you use the same computer that you developed with to run the executable?
    You can create indicators for the paths and confirm that they are okay.  Do you automatically close the front panel when closing the application?
    If so, you can disable that portion of the code, re-build the code and look at the paths and any error message.
    dbaechtel wrote:
    My Application is designed to coordinate several (16) separate test stations from one control. The test stations can run independently. I have a Test Manager application that launches independently running Test Runner VIs when the user has selected a test to run and the conditions to run it with. There can be 0 to 16 Test Runner VIs running at any given time. Each Test Runner VI uses the same template Test Runner.VI code but is given a unique Name based on a randomly generated GUID. I use a sequence of the New VI function, VI.FP.Open and VI.Run VI to create the VI based upon the template, give it a unique name and then launch it to run independently. See JPG fragment attached.
    This design works perfectly well when used in the LabView 2010 development environment. But it does not work when I build the Test Manager as an EXE application. There are no errors generated, but the new VI is not launched and I think that one of the functions in the sequence never returns. I am not sure if the New VI is created or not.
    Does anyone know how to modify this so that New VIs can be created, uniquely named and launched, that will work properly no matter whether the creating VI is running in either development (for debugging) or as a built application? You can query if it is running as an application or as development. 
    Does the sequence New VI function, VI.FP.Open and VI.Run VI work when used in a Built application? Is there some other method that will work to serve this need?  Yes they should
    Is there a function in LabView that will launch an exe file like WinExec does? Perhaps I can use that. Building an executable should be fine.  It's most likely something silly and you'll end up saying D'Oh! 

  • I have loaded Lion on my MacBook and the new trackpad functions work only on one ordinary account or user and not on the admin account. The trackpad preferences are well set. What can I do?

    I have loaded Lion on my MacBook and the new trackpad functions work only on one ordinary account or user and not on the admin account. The trackpad preferences are well set. What can I do?

    iCloud should still help you reduce some hard drive space. Just select "optimize" in the icloud tab in Mac Photo App preferences.
    Granted, not the same as completely offloading your library to a back-up drive at your location.
    Good Luck!

  • What are the differences between ECC5.0 and 6.0 new GL functionality

    Hi Experts,
    What are the differences between ECC5.0 and 6.0 new GL functionality.
    If we want to implement IFRS, I think New GL functionality is very helpful, but why sap is recommending only for ECC6.0 new GL functionality, Eventhough this functionality is available in ECC5.0.
    Best Regards,
    Dharani

    Dear,
    ECC 5.0 vs. ECC 6.0/SAP ERP 6.0
    Functionality not available in the new G/L with mySAP ERP 2004 and ERP Central Component (ECC) 5.0:
    Transfer prices
    Statistical key figures
    Euro translation
    Audit Information System (AIS)
    Archiving
    Data retention tool
    Regards,
    Chintan Joshi.

  • Trying to create a Histogram type/object for aggregate functions

    Hi,
    I am trying to create an aggregate function that will return a histogram
    type.
    It doesn't have to be an object that is returned, I don't mind returning
    a string but I would like to keep the associative array (or something
    else indexed by varchar2) as a static variable between iterations.
    I started out with the SecondMax example in
    http://www.csis.gvsu.edu/GeneralInfo/Oracle/appdev.920/a96595/dci11agg.htm#1004821
    But even seems that even a simpler aggregate function like one strCat
    below (which works) has problems because I get multiple permutations for
    every combination. The natural way to solve this would be to create an
    associative array as a static variable as part of the Histogram (see
    code below). However, apparently Oracle refuses to accept associate
    arrays in this context (PLS-00355 use of pl/sql table not allowed in
    this context).
    If there is no easy way to do the histogram quickly can we at least get
    something like strCat to work in a specific order with a "partition by
    ... order by clause"? It seems that even with "PARALLEL_ENABLE"
    commented out strCat still calls merge for function calls like:
    select hr,qtr, count(tzrwy) rwys,
    noam.strCat(cnt) rwycnt,
    noam.strCat(tzrwy) config,
    sum(cnt) cnt, min(minscore) minscore, max(maxscore) maxscore from
    ordrwys group by hr,qtr
    Not only does this create duplicate entries in the query result like
    "A,B,C" and "A,C,B" it seems that the order in rwycnt and config are not
    always the same so a user can not match the results based on their
    order.
    The difference between my functions and functions like sum and the
    secondMax demonstrated in the documentation is that secondMax does not
    care about the order in which it gets its arguments and does not need to
    maintain an ordered set in order to return the correct results. A good
    example of a built in oracle function that does care about all its
    arguments and probably has to maintain a similar data structure to the
    one I want is the PERCTILE_DISC function. If you can find the code for
    that function (or something like it) and forward a reference to me that
    in itself would be very helpful.
    Thanks,
    K.Dingle
    CREATE OR REPLACE type Histogram as object
    -- TYPE Hist10 IS TABLE OF pls_integer INDEX BY varchar2(10),
    -- retval hist10;
    -- retval number,
    retval noam.const.hist10,
    static function ODCIAggregateInitialize (sctx IN OUT Histogram)
    return number,
    member function ODCIAggregateIterate (self IN OUT Histogram,
    value IN varchar2) return number,
    member function ODCIAggregateTerminate (self IN Histogram,
    returnValue OUT varchar2,
    flags IN number) return number,
    member function ODCIAggregateMerge (self IN OUT Histogram,
    ctx2 IN Histogram) return number
    CREATE OR REPLACE type body Histogram is
    static function ODCIAggregateInitialize(sctx IN OUT Histogram) return
    number is
    begin
    sctx := const.Hist10();
    return ODCIConst.Success;
    end;
    member function ODCIAggregateIterate(self IN OUT Histogram, value IN
    varchar2)
    return number is
    begin
    if self.retval.exist(value)
    then self.retval(value):=self.retval(value)+1;
    else self.retval(value):=1;
    end if;
    return ODCIConst.Success;
    end;
    member function ODCIAggregateTerminate(self IN Histogram,
    returnValue OUT varchar2,
    flags IN number)
    return number is
    begin
    returnValue := self.retval;
    return ODCIConst.Success;
    end;
    member function ODCIAggregateMerge(self IN OUT Histogram,
    ctx2 IN Histogram) return number is
    begin
    i := ctx2.FIRST; -- get subscript of first element
    WHILE i IS NOT NULL LOOP
    if self.retval.exist(ctx2(i))
    then self.retval(i):=self.retval(i)+ctx2.retval(i);
    else self.retval(value):=ctx2.retval(i);
    end if;
    i := ctx2.NEXT(i); -- get subscript of next element
    END LOOP;
    return ODCIConst.Success;
    end;
    end;
    CREATE OR REPLACE type stringCat as object
    retval varchar2(16383), -- concat of all value to now varchar2, --
    highest value seen so far
    static function ODCIAggregateInitialize (sctx IN OUT stringCat)
    return number,
    member function ODCIAggregateIterate (self IN OUT stringCat,
    value IN varchar2) return number,
    member function ODCIAggregateTerminate (self IN stringCat,
    returnValue OUT varchar2,
    flags IN number) return number,
    member function ODCIAggregateMerge (self IN OUT stringCat,
    ctx2 IN stringCat) return number
    CREATE OR REPLACE type body stringCat is
    static function ODCIAggregateInitialize(sctx IN OUT stringCat) return
    number is
    begin
    sctx := stringCat('');
    return ODCIConst.Success;
    end;
    member function ODCIAggregateIterate(self IN OUT stringCat, value IN
    varchar2)
    return number is
    begin
    if self.retval is null
    then self.retval:=value;
    else self.retval:=self.retval || ',' || value;
    end if;
    return ODCIConst.Success;
    end;
    member function ODCIAggregateTerminate(self IN stringCat,
    returnValue OUT varchar2,
    flags IN number)
    return number is
    begin
    returnValue := self.retval;
    return ODCIConst.Success;
    end;
    member function ODCIAggregateMerge(self IN OUT stringCat,
    ctx2 IN stringCat) return number is
    begin
    self.retval := self.retval || ctx2.retval;
    return ODCIConst.Success;
    end;
    end;
    CREATE OR REPLACE FUNCTION StrCat (input varchar2) RETURN varchar2
    -- PARALLEL_ENABLE
    AGGREGATE USING StringCat;

    GraphicsConfiguration is an abstract class. You would need to subclass it. From the line of code you posted, it seems like you are going about things the wrong way. What are you trying to accomplish? Shouldn't this question be posted in the Swing or AWT forum?

  • Error in using aggregate function in Outer Query in Siebel Analytics

    Hi,
    When I am using aggregate function in outer query in Siebel Analytics I am facing error.
    Error Codes: OPR4ONWY:U9IM8TAC:OI2DL65P:OI2DL65P
    State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 59111] The SQL statement must include a GROUP BY clause. (HY000)
    Bellow is the code.
    SELECT test1.username saw_0, test1.desg saw_1,COUNT (test2.querydate) saw_2
    FROM (SELECT POSITION.CBL username,
    POSITION.CBP desg
    FROM "CM"
    WHERE (POSITION.BPTCD = 'Marketing')
    AND (POSITION.EDate =TIMESTAMP '1899-01-01 00:00:00'
    ) test1,
    (SELECT users.UN username,
    measures."Query Count" querycount,
    measures."Max Total Time" secs,
    topic.db dashboardname,
    "Query Time".DATE querydate
    FROM "Plan"
    WHERE (topic."Dashboard Name" IN ('DS'))) test2
    WHERE test2.username = LOWER (test1.username)
    AND test2.dashboardname = 'DS'
    GROUP BY test1.username, test1.desg

    Should your query be a valid SQL query?
    I can't think that the query you have would be valid in a SQL plus window.
    Chris

  • EJB 3.0: EJBQL aggregate functions not working properly

    Hi!
    We are experiencing problems when using aggregate functions within EJBQL queries. In my case, we have to use max() function to retrieve the max start_date from a specific table. In order to do this, we wrote the following code:
    String strQuery = "select max(o.dt_fim) from Questionario o";
    Query queryTeste = em.createQuery(strQuery);
    List x = queryTeste.getResultList();
    OBS: dt_fim is an Oracle 10g datetime column, with its corresponding entity attribute in Questionario entity class.
    AFAIK, the query above should return only one record (object instance) containing the date value, right? However, it brougth a list of the entity objects, corresponding to all records in the table, as we had just run "select o from Questionario o".
    Examining the server log we can see this behavior:
    [TopLink Fine]:2006.09.12 01:47:55.526--
    ServerSession(7119662)--Connection(7048401)--Thread(Thread[ApplicationServerThread-0,5,RequestThreadGroup])
    --SELECT ID_QUEST, DT_INICIO, DT_FIM, DS_QUEST, DT_CRIACAO, TP_QUEST, NM_QUEST, COD_SEGMENTO, ID_GRUPO FROM TBBOP_QUEST
    Are anyone experiencing this issue?
    Is there any workaround?
    Any help would be much appreciated, since we need to deploy the application for user testing asap.
    Thanks in advance.
    Best regards,
    Gustavo
    PS: We are using JDeveloper 10.1.3.0.4(SU4)
    Message was edited by:
    Gustavo Lopes Sobral

    The 10.1.3.0 versions of JDeveloper contain our early preview of EJB 3.0 JPA functionality. One limitation is that the query language is not complete (released before the spec was finalized).
    You can use TopLink Essentials (JPA Reference implementation) whihc contains a complete compliant implementation of the final specification.
    http://otn.oracle.com/jpa
    The 10.1.3.1 JDeveloper preview ships with TopLink Essentials.
    Doug

  • Pivot table in BI Publisher: Different aggregate functions in data columns

    Hi, everyone!
    I`ve got some troubles with pivot table in my rtf-template.
    Here is my xml:
    <ROWSET>
         <ROW>
              <_BI_SUBRF_MO_._MUN_NAME_>МО Петроградский р-н</_BI_SUBRF_MO_._MUN_NAME_>
              <_BI_PERS_ACCOUNT_CARD_._BI_PAC_NMB_>714000003</_BI_PERS_ACCOUNT_CARD_._BI_PAC_NMB_>
              <_BI_MONTH_DEBET_._BI_DEBET_SUM_>0.0</_BI_MONTH_DEBET_._BI_DEBET_SUM_>
              <_BI_CALENDAR_._YEAR__>2009</_BI_CALENDAR_._YEAR__>
              <_BI_CALENDAR_._MONTH__>8</_BI_CALENDAR_._MONTH__>
         </ROW>
         <ROW>
              <_BI_SUBRF_MO_._MUN_NAME_>МО Петроградский р-н</_BI_SUBRF_MO_._MUN_NAME_>
              <_BI_PERS_ACCOUNT_CARD_._BI_PAC_NMB_>714000004</_BI_PERS_ACCOUNT_CARD_._BI_PAC_NMB_>
              <_BI_MONTH_DEBET_._BI_DEBET_SUM_>165.58</_BI_MONTH_DEBET_._BI_DEBET_SUM_>
              <_BI_CALENDAR_._YEAR__>2009</_BI_CALENDAR_._YEAR__>
              <_BI_CALENDAR_._MONTH__>7</_BI_CALENDAR_._MONTH__>
         </ROW>
         <ROW>
              <_BI_SUBRF_MO_._MUN_NAME_>МО Петроградский р-н</_BI_SUBRF_MO_._MUN_NAME_>
              <_BI_PERS_ACCOUNT_CARD_._BI_PAC_NMB_>714000004</_BI_PERS_ACCOUNT_CARD_._BI_PAC_NMB_>
              <_BI_MONTH_DEBET_._BI_DEBET_SUM_>165.58</_BI_MONTH_DEBET_._BI_DEBET_SUM_>
              <_BI_CALENDAR_._YEAR__>2009</_BI_CALENDAR_._YEAR__>
              <_BI_CALENDAR_._MONTH__>7</_BI_CALENDAR_._MONTH__>
         </ROW>
    ...... and so on..
    </ROWSET>
    In the pivot table i`d like to see one row for every BISUBRF_MO_._MUN_NAME_ using BICALENDAR_._YEAR__ and BICALENDAR_._MONTH__ as measures and sum of BIMONTH_DEBET_._BI_DEBET_SUM_ and count of unique (or at least just count of) BIPERS_ACCOUNT_CARD_._BI_PAC_NMB_ in cells.
    I create a pivot table using wizard, everything ok except one thing: as i understand, in pivot table for data in rows we can use only one kind of aggregate function e.g. only sum or only count.
    Is there any way to use different aggregate functions in data cells?
    Thank you

    As you can see, when we use crosstab tag we can specify only one aggregate function for data cells.
    Is there any way to get in XSL-FO (where we can what really happens) instead of:
    <T1>
    <xsl:value-of select="sum(current-group()/_BI_PERS_ACCOUNT_CARD_._BI_PAC_UNID_)"/>
    </T1>
    <T2>
    <xsl:value-of select="sum(current-group()/_BI_MONTH_DEBET_._BI_DEBET_SUM_)"/>
    </T2>
    this
    <T1>
    <xsl:value-of select="sum(current-group()/_BI_PERS_ACCOUNT_CARD_._BI_PAC_UNID_)"/>
    </T1>
    <T2>
    <xsl:value-of select="count(current-group()/_BI_MONTH_DEBET_._BI_DEBET_SUM_)"/>
    </T2>
    Edited by: user12115038 on 26.10.2009 8:08

  • Creation of new partner function for VENDOR

    Hi,
    I've a requirement to create some Partner functions for vendors while creation of vendor. Some Partner functions are available by default and some we need to add. but while doing a BDC we are not able to find how many of them are available or where to put the new Partner function?
    Please let me know, if there is any BAPI availble..
    Regards,
    Anupam

    Try below LSMW batch input method its very esay to upload data
    Object               0040   Vendor master
    Method               0001   Standard
    Program Name         RFBIKR00
    Program Type         B   Batch Input

  • Issue in pivot while using aggregate functions

    when I use this below query in oracle sql developer
    ------------->select sum(round(8.08/0.54,2)*30) from dual.
    i am getting result as 448.8.it is a correct value
    but i use this below queries in pivot as same like above query i am getting result of doubled value 914.4.
    PIVOT
    SUM(round(ROUND(sellout,2)/6,2)) AS LAST_6_MON_SELL_OUT,
    SUM(ROUND(inventory,2)) AS INVENTORY_INTINS_1,
    Sum(round(ROUND(inventory,2)/round(ROUND(sellout,2)/6,2),2)*30) As Stockperday
    FOR PRODUCT IN (56,78)
    actually i am getting value for SUM(round(ROUND(sellout,2)/6,2)) is 0.54,*SUM(ROUND(inventory,2))* is 8.08 i the above query ,but i am getting wrong value for this aggregate function Sum(round(ROUND(inventory,2)/round(ROUND(sellout,2)/6,2),2)30)* as 914.4.but actual value is 448.8
    why this problem.can anybody explain me.why this problem

    Try ur luck in 'sql plsql thread'
    PL/SQL

  • Why doesn't PIVOT clause work with COLLECT aggregate function in 11g ?

    Hello all !
    I am really puzzled as to what is considered an aggregate function in the context of the PIVOT clause in 11g.
    I have been toying with quite a few things related to collections lately and this arose as an aside :
    CREATE TABLE TEST_COLL
       NODE_ID    VARCHAR2(15 CHAR) NOT NULL,
       NODE_VALUE VARCHAR2(45 CHAR) NOT NULL,
       NODE_LEVEL NUMBER(1)         NOT NULL
    CREATE OR REPLACE TYPE TREE_NODE AS OBJECT
       NODE_KEY  VARCHAR2( 15 CHAR),
       NODE_NAME VARCHAR2(127 CHAR)
    CREATE OR REPLACE TYPE TREE_NODES AS TABLE OF TREE_NODE NOT NULL;At this stage I am sure we all agree that the query
    SELECT NODE_LEVEL,
           CAST(COLLECT(TREE_NODE(NODE_ID, NODE_VALUE)) AS TREE_NODES) AS NODES
      FROM TEST_COLL
    GROUP BY NODE_LEVEL;is perfectly valid as the COLLECT function is an aggregate function according to the [Official Documentation|http://docs.oracle.com/cd/E11882_01/server.112/e10592/functions031.htm#i1271564]
    But then, one of the following two queries should work
    SELECT CAST(REGION_NODES     AS TREE_NODES) AS REGIONS,
           CAST(DEPARTMENT_NODES AS TREE_NODES) AS DEPARTMENTS,
           CAST(AREA_NODES       AS TREE_NODES) AS AREAS,
           CAST(CENTRE_NODES     AS TREE_NODES) AS CENTRES
      FROM (SELECT NODE_LEVEL, TREE_NODE(NODE_ID, NODE_VALUE) AS NODE
              FROM TREE_COLL
    PIVOT (COLLECT(NODE) FOR NODE_LEVEL IN (1 AS REGION_NODES,
                                             2 AS DEPARTMENT_NODES,
                                             3 AS AREA_NODES,
                                             4 AS CENTRE_NODES
    or (better)
    SELECT REGION_NODES     AS REGIONS,
           DEPARTMENT_NODES AS DEPARTMENTS,
           AREA_NODES       AS AREAS,
           CENTRE_NODES     AS CENTRES
      FROM (SELECT NODE_LEVEL, TREE_NODE(NODE_ID, NODE_VALUE) AS NODE
              FROM TREE_COLL
    PIVOT (CAST(COLLECT(NODE) AS TREE_NODES) FOR NODE_LEVEL IN (1 AS REGION_NODES,
                                                                 2 AS DEPARTMENT_NODES,
                                                                 3 AS AREA_NODES,
                                                                 4 AS CENTRE_NODES
           );yet, both fail with
    ORA-56902: expect aggregate function inside pivot operationInvestigating further, I found the same behaviour when using XMLAGG as the aggregate function in the PIVOT clause.
    Is this normal ? And if it is, is there any other way to achieve the result I was anticipating ?
    My version is
    SQL> SELECT BANNER FROM V$VERSION;
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    PL/SQL Release 11.2.0.3.0 - Production
    CORE    11.2.0.3.0      Production
    TNS for 64-bit Windows: Version 11.2.0.3.0 - Production
    NLSRTL Version 11.2.0.3.0 - ProductionThanks in advance
    Best Regards
    Philip

    Most likely a bug. But you can bypass it by using any other aggregate making sure group consists of a single row and apply collect to a pivoted value. Yes, the cost is double aggregation. And also there is another cost - you would need to create MAP member function otherwise aggreations like MAX/MIN, etc. will not work:
    CREATE OR REPLACE TYPE TREE_NODE AS OBJECT
       NODE_KEY  VARCHAR2( 15 CHAR),
       NODE_NAME VARCHAR2(127 CHAR),
       map member function f return varchar2
    Type created.
    CREATE OR REPLACE TYPE BODY TREE_NODE AS
      map member function f return varchar2 is
      begin
         return NODE_NAME;
      end f;
    end;
    Type body created.
    CREATE OR REPLACE TYPE TREE_NODES AS TABLE OF TREE_NODE NOT NULL
    Type created.
    SQL> select  *
      2    from  test_coll
      3  /
    NODE_ID NODE_VALUE NODE_LEVEL
    1       A                   1
    2       B                   2
    3       C                   3
    4       D                   4
    5       E                   1
    6       F                   2
    7       G                   3
    8       H                   4
    8 rows selected.
    SQL> Now:
    SELECT CAST(COLLECT(REGION_NODES)     AS TREE_NODES) AS REGIONS,
           CAST(COLLECT(DEPARTMENT_NODES) AS TREE_NODES) AS DEPARTMENTS,
           CAST(COLLECT(AREA_NODES)       AS TREE_NODES) AS AREAS,
           CAST(COLLECT(CENTRE_NODES)     AS TREE_NODES) AS CENTRES
      FROM (
            SELECT  ROWID RID,
                    NODE_LEVEL,
                    TREE_NODE(NODE_ID, NODE_VALUE) AS NODE
              FROM  TEST_COLL
    PIVOT (MAX(NODE) FOR NODE_LEVEL IN (
                                         1 AS REGION_NODES,
                                         2 AS DEPARTMENT_NODES,
                                         3 AS AREA_NODES,
                                         4 AS CENTRE_NODES
    REGIONS(NODE_KEY, NODE_NAME)                         DEPARTMENTS(NODE_KEY, NODE_NAME)                     AREAS(NODE_KEY, NODE_NAME)                           CENTRES(NODE_KEY, NODE_NAME)
    TREE_NODES(TREE_NODE('1', 'A'), TREE_NODE('5', 'E')) TREE_NODES(TREE_NODE('6', 'F'), TREE_NODE('2', 'B')) TREE_NODES(TREE_NODE('7', 'G'), TREE_NODE('3', 'C')) TREE_NODES(TREE_NODE('8', 'H'), TREE_NODE('4', 'D'))
    SQL> SY.

Maybe you are looking for

  • Spotlight - MDS - Crashing over and over

    A few days ago I did a Spotlight search and it froze. Since then my Mac has been Windows unstable. Mail crashes some times, Excel others times, Console, Activity Monitor, Safari, WebKit, iPhoto - all crash now. MDS is running almost constantly and cr

  • Save as button not working in Reader 9.3 and windows 7

    Hi, I have a win7 Optiplex 780 with Acrobat Reader 9.3 installed.  While in a web application, when I click the save as icon to save the pdf to disk, nothing happens.  The save as dialogue box does not come up.  The print button works, and the email

  • TS1368 i Tunes could not connect to the i Tunes Store. An Unknown error occurred(11556)

    i Tunes could not connect to the i Tunes Store. An Unknown error occurred(11556)

  • How much Maximum data preferred from XI

    Hi Friends, How much it Maximum data is preferred to transfer the XI.I have the approxmately 170 MB of data,This message is struck in queue(SMQ2) from past four days still "Transaction Running" Status and SXMB_Moni shows the Block arrow with status c

  • 'L' Payment Method

    Experts, What's the corresponding payment method/description in English (say for US) for the corresponding 'L' payment method in Germany. All answers would be duly appreciated and rewarded with points. Thanks, Nandita