Error ORA-00979: not a GROUP BY expression

I have to run a query to list the Product_code, stock_level, and the total quantity ordered
The tables are as follows:
PRODUCT:
PRODUCTCODE     PRODDESCRIPTION     PRICE     STOCKLEVEL
p1      carpet     40     10000
p2      tile     20     100000
p3      pergo     50     50000
PRODLINE:
ORDERNUMBER     PRODCODE     QUANTITY
o1      p1      1000
o1      p2      500
o2      p3      200
o3      p1      600
o3      p3      100
o4      p2      1000
o5      p2      800
Here is my SQL Statement:
SELECT pl.PRODCODE, SUM(pl.QUANTITY), pr.STOCKLEVEL
FROM PRODLINE pl, PRODUCT pr
WHERE pl.PRODCODE=pr.PRODUCTCODE
GROUP BY pl.PRODCODE;
RESULT:
ORA-00979: not a GROUP BY expression
Can someone please assist?

Welconme to the forum!
895231 wrote:
... Here is my SQL Statement:
SELECT pl.PRODCODE, SUM(pl.QUANTITY), pr.STOCKLEVEL
FROM PRODLINE pl, PRODUCT pr
WHERE pl.PRODCODE=pr.PRODUCTCODE
GROUP BY pl.PRODCODE;
RESULT:
ORA-00979: not a GROUP BY expression
Can someone please assist?Remember the ABC's of GROUP BY:
When you use a GROUP BY clause and/or an aggregate fucntion, then everything in the SELECT clause must be:
(A) an <b>A</b>ggregate function,
(B) one of the "group <b>B</b>y" expressions,
(C) a <b>C</b>onstant, or
(D) something that <b>D</b>epends entirely on the above. (For example, if you "GROUP BY TRUNC(dt)", you can SELECT "TO_CHAR (TRUNC(dt), 'Mon-DD')").
In your query, pr.stocklevel is none of the above.
The previous respondent show how you can make it one of the "group <b>B</b>y" expressions, which is noramlly how you would handle this situation.
Alternatively, you could make it an <b>A</b>ggregate function, like this:
SELECT       pl.PRODCODE
,       SUM (pl.QUANTITY)     AS total_quantity
,       MIN (pr.STOCKLEVEL)     AS stokclevel
FROM        PRODLINE      pl
,        PRODUCT      pr
WHERE       pl.PRODCODE     = pr.PRODUCTCODE
GROUP BY  pl.PRODCODE;

Similar Messages

  • GROUP BY with parameter - cause error -ORA-00979: not a GROUP BY expression

    I generate a query via PreparedStatement. For example:
    SELECT when, value FROM test GROUP BY ?;
    PrepState.toString(1, "when");
    That causing error: ORA-00979: not a GROUP BY expression
    My application using query like:
    SELECT to_char(data,1), SUM(vlue) as sum FROM test GROUP BY to_char(data, 2);
    PrepState.toString(1, "YYYY-MM");
    PrepState.toString(2, "YYYY-MM");

    Ah. Reproduced in the first chunk of PL/SQL below.
    The second chunk is a workaround.
    Basically, SQL is parsed by the syntax engine and optimizer to get an execution plan. Then you can have a sequence of "bind, execute, fetch, fetch, fetch..., bind, execute..."
    Since you can have multiple binds for a single SQL parse, then the fact that the first set of binds all happen to have the same value doesn't mean the next set will.
    The optimizer needs to be 100% sure that the value in the select must always be the same as the value in the group by, so you can't have two separate (and therefore potentially different) bind variable mappings. [Given the right circumstances, the optimizer might do all sorts of tricks, such as using materialized views and function-based indexes.]
    Misleadingly, it actually fails on the 'EXECUTE' step of DBMS_SQL rather than the PARSE.
    declare
      v_sql varchar2(1000) :=
        'select to_char(created,:b1), count(*) '||
        ' from user_objects u '||
        ' group by to_char(created,:b2) '||
        ' order by to_char(created,:b3)';
      v_fmt varchar2(10) := 'YYYY';
      v_cur number;
      v_ret_str varchar2(10);
      v_ret_num number;
      v_ret number;
    begin
      v_cur := dbms_sql.open_cursor;
      dbms_sql.parse(v_cur, v_sql, dbms_sql.native );
      dbms_sql.define_column_char (v_cur, 1, v_ret_str, 10);
      dbms_sql.define_column (v_cur, 2, v_ret_num);
      dbms_sql.bind_variable( v_cur, ':b1', v_fmt );
      dbms_sql.bind_variable( v_cur, ':b2', v_fmt );
      dbms_sql.bind_variable( v_cur, ':b3', v_fmt );
      v_ret := dbms_sql.execute( v_cur );
      WHILE ( dbms_sql.fetch_rows(v_cur) > 0 ) LOOP
        dbms_sql.column_value_char (v_cur, 1, v_ret_str );
        dbms_sql.column_value (v_cur, 2, v_ret_num );
        dbms_output.put_line('>'||v_ret_str||':'||v_ret_num);
      END LOOP;
    end;
    declare
      v_sql varchar2(1000) :=
        'select to_char(created,f.fmt), count(*) '||
        ' from user_objects u, (select :b1 fmt from dual) f '||
        ' group by to_char(created,f.fmt) '||
        ' order by to_char(created,f.fmt)';
      v_fmt varchar2(10) := 'YYYY';
      v_cur number;
      v_ret_str varchar2(10);
      v_ret_num number;
      v_ret number;
    begin
      v_cur := dbms_sql.open_cursor;
      dbms_sql.parse(v_cur, v_sql, dbms_sql.native );
      dbms_sql.define_column_char (v_cur, 1, v_ret_str, 10);
      dbms_sql.define_column (v_cur, 2, v_ret_num);
      dbms_sql.bind_variable( v_cur, ':b1', v_fmt );
      v_ret := dbms_sql.execute( v_cur );
      WHILE ( dbms_sql.fetch_rows(v_cur) > 0 ) LOOP
        dbms_sql.column_value_char (v_cur, 1, v_ret_str );
        dbms_sql.column_value (v_cur, 2, v_ret_num );
        dbms_output.put_line('>'||v_ret_str||':'||v_ret_num);
      END LOOP;
    end;
    /

  • Group by error "ORA-00979: not a GROUP BY expression"

    I am working on class assignment. Looking to solve the error.
    Can anyone tell me what I did wrong?
    Data:
    Customer table [custid]
    Plant Order Table [orderid, cusid]
    PlantOrderDetail Table [orderid, plantid, quantity, unitprice]
    I am trying to get a total amount that each customer spend (lump-sum of the money that each customer spend on us)
    My query:
    SELECT cus.custid, cus.custnamelast, SUM(pld.quantity * pld.quotedprice) as "Total Due"
    FROM Customers cus
    JOIN PlantOrders plo ON cus.custid = plo.custid
    JOIN PlantOrderDetails pld ON plo.orderid =pld.orderid
    GROUP BY cus.custid;
    Result:
    SELECT cus.custid, cus.custnamelast, SUM(pld.quantity * pld.quotedprice) as "Total Due"
    ERROR at line 1:
    ORA-00979: not a GROUP BY expression

    Hi,
    You have to add cus.custnamelast to the GROUP BY clause
    Tip: to post formatted code please enclose it between {noformat}{noformat} tags (start and end tags are the same) :)
    Regards,
    Edited by: Walter Fernández on Jan 30, 2009 11:58 PM                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • ORA-00979: not a GROUP BY expression ORA-01722: invalid number error

    This is my follwing code:
    select isin,nomenclature,sum(total_balance),c_itd_rddt,c_itd_intrrt from
    select distinct instru.c_int_isin isin,
    instru.c_int_longdesc nomenclature,
    to_char(abs(acpos.acp_totbal),
    '999999999999,99,99,990.00')total_balance,
    c_itd_rddt,
    c_itd_intrrt
    from cs_instru_t instru,
    cs_instrudetls_t insdtls,
    cs_acpos_t acpos
    where instru.c_int_instruid = insdtls.c_itd_instruid
    and acpos.acp_instruid = instru.c_int_instruid
    and acpos.acp_acntnum = 'SG030001'
    and instru.c_int_instypid in (1)
    and insdtls.c_itd_rddt > ('31-Dec-2010')
    and instru.c_int_isin not in
    (select spsec.c_ssg_isinno from cs_splsecgrp_t spsec) and acpos.acp_totbal!=0
    group by instru.c_int_instruid,
    instru.c_int_longdesc,
    insdtls.c_itd_rddt,
    instru.c_int_insstts,
    instru.c_int_isin,
    insdtls.c_itd_rddt,
    acpos.acp_totbal,c_itd_intrrt
    --order by extract(year from  c_itd_rddt),c_itd_intrrt
    union
    select c_srm_prntisin isin,c_int_longdesc nomenclature,to_char(abs(acpos.acp_totbal),
    '999999999999,99,99,990.00') total_balance,c_itd_rddt,
    c_itd_intrrt from cs_instrudetls_t insdtls,cs_strmap_t map,cs_instru_strips instru,cs_acpos_t acpos
    where c_int_instruid=c_srm_prncplinsid
    and c_itd_instruid=c_int_instruid
    and c_srm_prncplinsid=acp_instruid
    and acp_acntnum='SG030001'
    )view1
    group by isin
    I want to group by isin only as only isin is same and the rest of the fields are different.But I want to display all the fields.Please Help
    I am getting the following errors:
    ORA-00979: not a GROUP BY expression
    ORA-01722: invalid number

    wat abt the other error ora-01722 not a valid number. How to take sum of total_balance which is to_char

  • Ora-00979 not a group by expression

    hi , how r u ?
    my problem in group by , how include subquery in group by ,
    this query give me error ora-00979 not a group by expression ,
    please help me in this query :
    select EVV_CompScale.Code CompCode,ScaleCode ,NameEn,NameAr,RatingChar ,count(EV_CompetencyEmployee.Code) as VoteCount ,
    coalesce((select count(EV_CompetencyEmployee.code) from EV_CompetencyEmployee   join EV_EmployeeEvaluation tblEV on EV_Code=tblEV.Code  and EmployeeApprovalCMP=1 and DirectManagerApprovalCMP=1  and SeniorManagerApprovalCMP=1 and tblEV.configCode='K' where CompetencyCode=EVV_CompScale.Code  and not RatingID is null  ),1) as Total
    from EVV_CompScale left join (EV_CompetencyEmployee join EV_EmployeeEvaluation on EV_Code=EV_EmployeeEvaluation.Code and EmployeeApprovalCMP=1 and DirectManagerApprovalCMP=1 and SeniorManagerApprovalCMP=1 and EV_EmployeeEvaluation.configCode='K') on EV_CompetencyEmployee.CompetencyCode=EVV_CompScale.Code and RatingID=ScaleCode where CompConfig='K'
    and ScaleConfig='K' group by EVV_CompScale.Code,ScaleCode,RatingChar,NameEn,NameAr
    order by CompCode .
    thanks .

    Hi,
    In a GROUP BY querry, every item in the SELECT list must be one of the following
    (1) One of the GROUP BY expressions
    (2) An aggregate function
    (3) A constant
    (4) Deterministic expressions based on the above (for example, COALESCE, where all the arguments are taken from the list above)
    So if your scalar sub-query is going to be part of the GROUP BY query, it has to fit into one of those categories
    I don't see any good way of convincing the compiler that your scalar sub-query is a constant, even if it happens to rturn a constant value, but you can make it either
    (1) one of the GROUP BY expressions (compute it in a sub-query, to avoid repeating the whole scalar sub-query in the GROUP BY clause), or
    (2) an aggregate function ( e.g. MAX ((SELECT ...))).
    But the scalar sub-query doesn't have to be part of the GROUP BY query. Depending on your tables and the desired results, it might be easy to do the GROUP BY and what is now the scalar sub-query separately, and then join the two result sets.
    If you need help, it always helps to post:
    (1) The version of Oracle (and any other relevant software) you're using
    (2) A little sample data (just enough to show what the problem is) from all the relevant tables
    (3) The results you want from that data
    (4) Your best attempt so far (formatted) (You posted this, but since it's unformated, it's very hard to read.)
    (5) The full error message (if any), including line number
    Executable SQL statements (like "CREATE TABLE AS ..." or "INSERT ..." statements) are best for (2).
    Formatted tabular output is okay for (3). Type these 6 characters:
    &#123;code&#125;
    (small letters only, inside curly brackets) before and after formatted text, to preserve spacing.
    Simplify the problem if you can. For example, if your real query involves many columns and many join conditions, try to post a similar problem that has few columns and very siomple join conditions, but has the same problem as your real query.

  • "ORA-00979: not a GROUP BY expression" in Oracle11g R2 (11.2.0.3).

    Hi,
    We have a query which is working in 10g and giving error "ORA-00979: not a GROUP BY expression" in Oracle11g R2 (11.2.0.3). we have found following two solution to resolve it from the internet.
    1)You can Set the hidden parameter “_FIX_CONTROL”=’5520732:OFF’ in the pfile. This parameter disables a given bug number.
    2)We can set the parameter optimizer_features_enable to a previous version of Oracle, ’11.1.0.7′
    but I am unable to find the side effects of above change, so I need to know:
    1)whcih is batter solution
    2)what are the possible side effects of both solution.

    Hi Fran,
    Please find the below query.
    SELECT DECODE(TEMP.TENOR_IND, 'L', TEMP.SHORT_NAME, NULL) PRODUCT_NAME,
    TEMP.BA_PRODTYPE_ID,
    TEMP.TENOR,
    TEMP.PERIOD_TYPE,
    TEMP.PERIOD_VALUE,
    SUM(TEMP.LIMIT_BASE_AMOUNT),
    SUM(TEMP.PNDG_LIMIT_BASE_AMOUNT),
    SUM(TEMP.GROSS_EXP_BASE_AMOUNT),
    SUM(TEMP.NETT_EXP_BASE_AMOUNT),
    SUM(TEMP.COLLATERAL_BASE_AMOUNT),
    TEMP.TENOR_IND,
    MAX(TEMP.COB_DATE),
    TEMP.CRP_PRODUCT_GROUP
    FROM (SELECT /*+INDEX(LIM BUS_CB_LIMIT_INDX01) INDEX(btpd BUS_TP_PORTFOLIO_DTLS_INDX02)*/
    MCBPT.BA_PRODTYPE_ID,
    DECODE(LIM.TENOR_IND, 'L', MCBPT.SHORT_NAME, NULL),
    LIM.LIMIT_ID,
    LIM.LIMIT_TYPE_ID,
    LIM.LIMIT_STATUS,
    LIM.OWNER_ID,
    LIM.PERIOD_TYPE,
    LIM.PERIOD_VALUE,
    LIM.LIMIT_CURR,
    LIM.LIMIT_BASE_AMOUNT,
    LIM.GROSS_EXP_BASE_AMOUNT,
    DECODE(LIM.PERIOD_TYPE,
    5,
    'Inf',
    (TO_CHAR(LIM.PERIOD_VALUE) || '-' ||
    DECODE(LIM.PERIOD_TYPE, 4, 'Y', 3, 'M', 2, 'W', 1, 'D'))) TENOR,
    LIM.TENOR_SET_ID,
    LIM.PNDG_LIMIT_CURR,
    LIM.PNDG_LIMIT_BASE_AMOUNT,
    LIM.NETT_EXP_BASE_AMOUNT,
    LIM.COLLATERAL_BASE_AMOUNT,
    LIM.COB_DATE,
    LIM.TENOR_IND,
    MCBPT.CRP_PRODUCT_GROUP,
    MCBPT.SHORT_NAME
    FROM BUS_CB_LIMIT LIM,
    BUS_TP_PORTFOLIO_DETAILS BTPD,
    MST_CB_BA_PRODUCT_TYPE MCBPT
    WHERE BTPD.ORG_ID = 108503
    AND EXISTS
    (SELECT ORG_ID
    FROM BUS_CA_CORPORATE
    WHERE ORG_STAT IN (1, 2, 4, 7, 8, 9, 22, 24, 25)
    AND BTPD.BOOKING_ENTITY = ORG_ID
    START WITH ORG_ID = 894
    CONNECT BY PRIOR ORG_ID = PARENT_ORG_ID)
    AND NOT EXISTS
    (SELECT /*+INDEX(btpd1 BUS_TP_PORTFOLIO_DTLS_INDX02)*/
    btpd1.ba_prodtype_id
    FROM bus_tp_portfolio_details btpd1
    WHERE btpd1.org_id = 108503
    AND btpd1.booking_entity = 894
    AND BTPD.BA_PRODTYPE_ID = btpd1.ba_prodtype_id
    AND EXISTS
    (SELECT ba_prodtype_id
    FROM mst_cb_ba_product_type
    WHERE product_grp_id = 1
    AND btpd1.ba_prodtype_id = ba_prodtype_id))
    AND MCBPT.BA_PRODTYPE_ID = BTPD.BA_PRODTYPE_ID
    AND BTPD.CP_STATUS = 4
    AND LIM.OWNER_ID = BTPD.PORTFOLIO_ID
    AND LIM.OWNER_TYPE = 4
    AND LIM.LIMIT_TYPE_ID = 2) TEMP
    WHERE 1 = 1
    GROUP BY TEMP.BA_PRODTYPE_ID,
    TEMP.PERIOD_TYPE,
    TEMP.PERIOD_VALUE,
    TEMP.TENOR_IND,
    TEMP.SHORT_NAME,
    TEMP.CRP_PRODUCT_GROUP
    ORDER BY TEMP.BA_PRODTYPE_ID, TEMP.PERIOD_TYPE, TEMP.PERIOD_VALUE

  • Impact of solution of ORA-00979: not a GROUP BY expression in Oracle11g R2

    Hi,
    We have a query which is working in 10g and giving error "ORA-00979: not a GROUP BY expression" in Oracle11g R2 (11.2.0.3). we have found following two solution to resolve it from the internet.
    1)You can Set the hidden parameter “_FIX_CONTROL”=’5520732:OFF’ in the pfile. This parameter disables a given bug number.
    2)We can set the parameter optimizer_features_enable to a previous version of Oracle, ’11.1.0.7′
    but I am unable to find the side effects of above change, so I need to know:
    1)whcih is batter solution
    2)what are the possible side effects of both solution.

    Hi,
    1: The fix for the fix of bug 5520732 is already solved in 11.2, so this won't help
    2: This can cause performance, suboptimal plans and losing lot of features from 11.2
    The third option is always the best in this case, rewrite the query. There is an error in the SQL, so fix that one. It is just one query, so it wouldn't be to hard. The group by items are possibly out of sync with the select items.
    Herald ten Dam
    http://htendam.wordpress.com

  • Getting "ORA-00979: not a GROUP BY expression" error in Inline query

    Hello all,
    The following query when run in SCOTT user gives "ORA-00979: not a GROUP BY expression" error.
    If I remove the TRUNC function from the outer query's group by clause, then it fetches
    (My actual query is something similar to the following query. I have given emp, dept tables for convenience's sake)
    select e.empno,e.ename, AVG(e.SAL), trunc(e.hiredate),
    (select sum(sal) from emp
    where hiredate = e.hiredate) salary
    from emp e
    group by e.DEPTNO,e.EMPNO,e.ENAME, trunc(e.hiredate)
    Pls suggest how this error can be avoided.
    Regards,
    Sam

    Why not this?
    satyaki>
    satyaki>select * from v$version;
    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
    PL/SQL Release 10.2.0.1.0 - Production
    CORE    10.2.0.1.0      Production
    TNS for Linux: Version 10.2.0.1.0 - Production
    NLSRTL Version 10.2.0.1.0 - Production
    Elapsed: 00:00:00.02
    satyaki>
    satyaki>
    satyaki>select e.empno,
      2         e.ename,
      3         AVG(e.SAL),
      4         trunc(e.hiredate),
      5        (
      6           select sum(sal)
      7           from emp
      8           where hiredate = e.hiredate
      9        ) salary
    10  from emp e
    11  group by e.DEPTNO,
    12           e.EMPNO,
    13           e.ENAME,
    14           e.hiredate;
         EMPNO ENAME      AVG(E.SAL) TRUNC(E.H     SALARY
          7934 MILLER         1887.6 23-JAN-82     5583.6
          7698 Glen             1848 23-JAN-82     5583.6
          7788 SCOTT          598.95 19-APR-87     598.95
          7900 JAMES          1379.4 03-DEC-81    6650.16
          7521 WARD           226.88 22-FEB-81     226.88
          7599 BILLY            4500 10-JUN-09       4500
          2222 sp               1200 14-SEP-09       1200
          7902 FORD          5270.76 03-DEC-81    6650.16
          7566 Smith            1848 23-JAN-82     5583.6
          7654 MARTIN           1815 28-SEP-81       1815
          7839 KING             7260 17-NOV-81       7260
         EMPNO ENAME      AVG(E.SAL) TRUNC(E.H     SALARY
          7844 TURNER           2178 08-SEP-81       2178
          7876 ADAMS          159.72 23-MAY-87     159.72
    13 rows selected.
    Elapsed: 00:00:00.03
    satyaki>Regards.
    Satyaki De.

  • Java.sql.SQLException: ORA-00979: not a GROUP BY expression in a query

    I am getting java.sql.SQLException: ORA-00979: not a GROUP BY expression
    when I run
    select count(*) from ( select count(rec_no) AS REC_NO_NUM,created_by AS
    CREATED_BY,to_char(created_dt,'Mon YYYY') AS CREATED_DT,to_date(to_char(created_dt,'Mon
    YYYY'),'Mon YYYY') AS CREATED_DATE from tbl_ndr_renal_reg where reg_no is not null and delete_ind
    = 'N' group by to_char(created_dt,'Mon YYYY'),created_by )
    But when I run the subquery below it doesn't give any error and returns rows.
    select count(rec_no) AS REC_NO_NUM,created_by AS CREATED_BY,to_char(created_dt,'Mon YYYY') AS
    CREATED_DT, to_date(to_char(created_dt,'Mon YYYY'),'Mon YYYY') AS CREATED_DATE from
    tbl_ndr_renal_reg where reg_no is not null and delete_ind = 'N' group by to_char(created_dt,'Mon
    YYYY'),created_by
    Thanks

    I tried that too still getting the same error
    SQL> select count(*) from (
    2 select count(rec_no) AS REC_NO_NUM,
    3 created_by AS CREATED_BY,
    4 to_char(created_dt,'Mon YYYY') AS CREATED_DT,
    5 to_date(to_char(created_dt,'Mon YYYY'),'Mon YYYY') AS CREATED_DATE
    6 from tbl_ndr_renal_reg
    7 where reg_no is not null
    8 and delete_ind = 'N'
    9 group by to_char(created_dt,'Mon YYYY'),created_by)
    10 ;
    to_date(to_char(created_dt,'Mon YYYY'),'Mon YYYY') AS CREATED_DATE
    ERROR at line 5:
    ORA-00979: not a GROUP BY expression

  • Sql - ORA-00979: not a GROUP BY expression

    Hi Expert,
    I got error message :ORA-00979: not a GROUP BY expression from below sql statement
    Please advise - display total number of item sold and the total dollars of all items. Only show results where the total qty is greater than 2.
    SELECT          i.Itemcode, i.Description, o.Qty, sum(o.Qty*o.salesprice) AS TOTALDOLLARS
    FROM           ORDERLINE o
    INNER JOIN     ITEM i
    ON          o.itemcode = i.itemcode
    GROUP BY     i.Itemcode
    Having o.qty >2
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    Create table ORDERLINE
    Qty          Number(4),
    Salesprice          Number(6,2),
    OrderNo          Number(3),     
    Itemcode          Varchar2(6),
    Primary Key      (OrderNo,Itemcode),      
    Foreign Key      (Itemcode)          References ITEM,
    Foreign Key      (OrderNo)      References SALESORDER
    Create Table ITEM
    Itemcode          Varchar2(6),
    Description          Varchar2(50),
    Retailprice          Number(6,2),
    Weight          Number (4,1),
    Purchaseprice     Number(6,2),
    Category          Varchar2(20),
    Primary Key      (Itemcode)
    );

    Hi Frank,
    My apologize and learnt from my mistake of posting problem on this.
    I need to run a result set to display total number of item sold and the total dollars of all items. Only show results where the total qty is greater than 2.
    When I tried the below sql and got this error message : ORA-00979: not a GROUP BY expression
    SELECT          i.Itemcode, i.Description, o.Qty, sum(o.Qty*o.saleprice) AS TOTALDOLLARS
    FROM           ORDERLINE o
    INNER JOIN     ITEM i
    ON          o.itemcode = i.itemcode
    GROUP BY     i.Itemcode, i.Description
    Having sum(o.qty) >2
    the result set should be :
    Itemcode Description Total Qty Total Dollar
    A10 Hammock 11 935
    A13 Table Tennis Bat 4 100
    A27 8 cm Candle 128 587
    A30 Set of 4 outdoor glasses 4 38
    Create Table ITEM
    Itemcode          Varchar2(6),
    Description          Varchar2(50),
    Retailprice          Number(6,2),
    Weight               Number (4,1),
    Purchaseprice     Number(6,2),
    Category          Varchar2(20),
    Primary Key      (Itemcode)
    --Insert statements to populate the ITEM Table
    INSERT INTO ITEM
    (Itemcode, Description, Retailprice, Weight, Purchaseprice, Category)
    VALUES ('A10', 'Hammock', 85, 12, 40,'Outdoor');
    INSERT INTO ITEM
    (Itemcode, Description, Retailprice, Weight, Purchaseprice, Category)
    VALUES ('A11', 'Glitz BBQ', 999, 55, 350,'Luxury');
    INSERT INTO ITEM
    (Itemcode, Description, Retailprice, Weight, Purchaseprice, Category)
    VALUES ('A13', 'Table Tennis Bat', 29, 0.2, 9.5,'Sport');
    INSERT INTO ITEM
    (Itemcode, Description, Retailprice, Weight, Purchaseprice, Category)
    VALUES ('A15', 'Basketball Ring', 150, 25, 45,'Sport');
    INSERT INTO ITEM
    (Itemcode, Description, Retailprice, Weight, Purchaseprice, Category)
    VALUES ('A16', 'Wiggles Basketball', 25, 1.4, 9.2,'Sport');
    INSERT INTO ITEM
    (Itemcode, Description, Retailprice, Weight, Purchaseprice, Category)
    VALUES ('A18', 'Tiger Autographed Putter', 499, 2.1, 250,'Outdoor');
    INSERT INTO ITEM
    (Itemcode, Description, Retailprice, Weight, Purchaseprice, Category)
    VALUES ('A22', '12 Tiger Golf Balls', 35.95, 1.5, 20,'Sport');
    INSERT INTO ITEM
    (Itemcode, Description, Retailprice, Weight, Purchaseprice, Category)
    VALUES ('A27', '8 cm Candle', 5, 0.5, 0.58,'Outdoor');
    INSERT INTO ITEM
    (Itemcode, Description, Retailprice, Weight, Purchaseprice, Category)
    VALUES ('A30', 'Set of 4 outdoor glasses', 10, 1, 2.65,'Outdoor');
    INSERT INTO ITEM
    (Itemcode, Description, Retailprice, Weight, Purchaseprice, Category)
    VALUES ('A35', '16 cm Candle', 25, 1, 1.5,'Outdoor');
    --Insert statements to populate the ORDERLINE Table
    Create table ORDERLINE
    Qty          Number(4),
    Saleprice          Number(6,2),
    OrderNo          Number(3),     
    Itemcode          Varchar2(6),
    Primary Key      (OrderNo,Itemcode),      
    Foreign Key      (Itemcode)          References ITEM,
    Foreign Key      (OrderNo)      References SALESORDER
    INSERT INTO ORDERLINE
    (OrderNo, Qty, SalePrice, Itemcode)
    VALUES (501, 1, 85, 'A10');
    INSERT INTO ORDERLINE
    (OrderNo, Qty, SalePrice, Itemcode)
    VALUES (501, 4, 25, 'A13');
    INSERT INTO ORDERLINE
    (OrderNo, Qty, SalePrice, Itemcode)
    VALUES (501, 6, 5, 'A27');
    INSERT INTO ORDERLINE
    (OrderNo, Qty, SalePrice, Itemcode)
    VALUES (502, 1, 999, 'A11');
    INSERT INTO ORDERLINE
    (OrderNo, Qty, SalePrice, Itemcode)
    VALUES (503, 10, 85, 'A10');
    INSERT INTO ORDERLINE
    (OrderNo, Qty, SalePrice, Itemcode)
    VALUES (503, 100, 4.5, 'A27');
    INSERT INTO ORDERLINE
    (OrderNo, Qty, SalePrice, Itemcode)
    VALUES (504, 2, 85, 'A15');
    INSERT INTO ORDERLINE
    (OrderNo, Qty, SalePrice, Itemcode)
    VALUES (504, 12, 5, 'A27');
    INSERT INTO ORDERLINE
    (OrderNo, Qty, SalePrice, Itemcode)
    VALUES (505, 1, 900, 'A11');
    INSERT INTO ORDERLINE
    (OrderNo, Qty, SalePrice, Itemcode)
    VALUES (505, 1, 450, 'A18');
    INSERT INTO ORDERLINE
    (OrderNo, Qty, SalePrice, Itemcode)
    VALUES (506, 10, 4.7, 'A27');
    INSERT INTO ORDERLINE
    (OrderNo, Qty, SalePrice, Itemcode)
    VALUES (506, 4, 9.5, 'A30');
    INSERT INTO ORDERLINE
    (OrderNo, Qty, SalePrice, Itemcode)
    VALUES (506, 2, 35, 'A22');
    Many thanks
    Mandy

  • ORA-00979: not a GROUP BY expression on different oracle version

    Hi,
    I tried below sql on different database and I'm having a strange result.
    error is ORA-00979: not a GROUP BY expression
    SELECT COUNT(*) OVER() CNT,
    COUNT(member_id) AS cnt2,
    etoc_type,
    journal_id,
    volume_id,
    issue_id,
    current_registered_users,
    date_sent,
    date_order,
    (COUNT(member_id) -
    (Select Count( *)
    FROM oracjoc.email_alert_bounce_backs bb
    WHERE aa.journal_id = bb.journal_id
    AND aa.volume_id = bb.volume_id
    AND aa.issue_id = bb.issue_id
    AND aa.etoc_type = bb.etoc_type
    AND aa.date_sent = TO_CHAR(bb.date_sent, 'ddMonYYYY')
    )) delivered
    FROM
    (SELECT member_id,
    etoc_type,
    journal_id,
    volume_id,
    issue_id,
    current_registered_users,
    TO_CHAR(date_sent, 'ddMonyyyy') date_sent,
    To_Number(To_Char(Date_Sent, 'yyyymmdd')) Date_Order
    FROM oracjoc.Report_Issue_Alert
    WHERE Etoc_Type = '1'
    ) Aa
    GROUP BY Journal_Id,
    Volume_Id,
    Issue_Id,
    Etoc_Type,
    Current_Registered_Users,
    Date_Order,
    Date_Sent
    ORDER BY date_order DESC
    Oracle version:
    Oracle Database 11g Release 11.1.0.7.0 - 64bit Production: I got failed result on this one
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production: sql was successfully executed.
    Can someone explain is this still a part of bug on non enterprise edition?, TIA!

    919272 wrote:
    Hi,
    I tried below sql on different database and I'm having a strange result.
    error is ORA-00979: not a GROUP BY expressionRead the full error message. It has also a row and a column number specified. Use this number to find out which column gives you the trouble.
    I see that there are several not needed date to char conversions. I could imaging that they confuse the query merge mechanism. Other than that: try to strip down the query to the smallest posisble set of colum combination. So that you can see where the error comes from.
    SELECT COUNT(*) OVER() CNT,
    COUNT(*) AS cnt2,
    etoc_type,
    journal_id,
    volume_id,
    issue_id,
    current_registered_users,
    date_sent2,
    (COUNT(*) -
      (Select Count( *)
        FROM oracjoc.email_alert_bounce_backs bb
        WHERE aa.journal_id = bb.journal_id
        AND aa.volume_id = bb.volume_id
        AND aa.issue_id = bb.issue_id
        AND aa.etoc_type = bb.etoc_type
        AND aa.date_sent2 = trunc(bb.date_sent)
        )) delivered
    FROM  (SELECT member_id, etoc_type, journal_id, volume_id, issue_id, current_registered_users,
           trunc(date_sent) date_sent2,
    FROM oracjoc.Report_Issue_Alert
    WHERE Etoc_Type = '1'
    ) Aa
    GROUP BY Journal_Id, Volume_Id, Issue_Id, Etoc_Type, Current_Registered_Users, Date_Sent2
    ORDER BY Date_Sent2 DESC

  • Upgrade database ORA-00979: not a GROUP BY expression in Oracle11g R2

    hi,
    I am working in Oracle 10g (10.2.0.4) Environement. I want to update Our production database from Oracle 10g to Oracle11g R2(11.2.0.3).
    note: OS CentOS X86-64
    We follow the migration through import & Export Commands from Production database to New Database.
    One Of user having views, while executing that view in 11g R2 Environment it gives the following error.
    ORA-00979: not a GROUP BY expression.
    When i run this same Query in Oracle10g Environment is executed Successfully without errors or warnings.

    Please be aware that CentOS is not a supported distro for Oracle installs.
    For your error, pl see
    SQL used to work in 10G Throws ORA-00979 Not A Group By Expression after upgrading to 11G [ID 813946.1]     
    ORA-979 bugs on 11.2.0.1 [ID 1085766.1]
    ORA-00979 AFTER UPGRADE TO 11G [ID 814423.1]     
    HTH
    Srini

  • ORA-00979: not a GROUP BY expression in Oracle11g R2

    hi,
    I am working in Oracle 9i Environement. I want to update Our production database from Oracle 9i to Oracle11g R2.
    Note :- Oracle 9i & 11g R2 are different systems.
    We follow the migration through import & Export Commands from Production database to New Database.
    One Of user having views, while executing that view in 11g R2 Environment it gives the following error.
    ORA-00979: not a GROUP BY expression.
    When i run this same Query in Oracle9i Environment is executed Successfully with out errors or warnings.
    This type of problem not occurred in all views.
    In Problematic view having Decode function with in that another decode method was used & finally group by clause is used.
    Please guide to me if any issues in 11g R2 Environment.
    Thanx in advance
    Vijay Kumar
    Edited by: user1672302 on Apr 4, 2012 5:32 PM

    Pl see these MOS Docs
    ORA-00979 AFTER UPGRADE TO 11G [ID 814423.1]     
    SQL used to work in 10G Throws ORA-00979 Not A Group By Expression after upgrading to 11G [ID 813946.1]     
    HTH
    Srini

  • Java.sql.SQLException: ORA-00979: not a GROUP BY expression

    Hi all,
    I have the following sql query;
    SELECT
    act.BAM_NAME AS ACTIVITY_NAME,
    svc.BAM_SERVICE_NAME AS SERVICE_NAME,
    opt.BAM_OP_NAME AS OPERATION_NAME,
    COUNT(msg.BAM_OP_ID) AS MESSAGE_COUNT
    FROM
    BAM_ACTIVITY act, BAM_MESSAGE msg, BAM_OPERATION opt, BAM_SERVICE svc
    WHERE
    act.BAM_ID = msg.BAM_ACTIVITY_ID
    AND
    msg.BAM_OP_ID = opt.BAM_ID
    AND
    opt.BAM_SERVICE_ID = svc.BAM_ID
    AND
    act.BAM_ID = ?
    GROUP BY msg.BAM_OP_ID ORDER BY svc.BAM_SERVICE_NAME
    When i execute following expression @ sql/plus i face above error...
    Does any body correct my sql query?
    Thanks.
    -viji
    Edited by: user8977935 on Jan 22, 2010 4:38 AM

    Hi,
    Should not it be
    SELECT
    act.BAM_NAME AS ACTIVITY_NAME,
    svc.BAM_SERVICE_NAME AS SERVICE_NAME,
    opt.BAM_OP_NAME AS OPERATION_NAME,
    COUNT(msg.BAM_OP_ID) AS MESSAGE_COUNT
    FROM
    BAM_ACTIVITY act, BAM_MESSAGE msg, BAM_OPERATION opt, BAM_SERVICE svc
    WHERE
    act.BAM_ID = msg.BAM_ACTIVITY_ID
    AND
    msg.BAM_OP_ID = opt.BAM_ID
    AND
    opt.BAM_SERVICE_ID = svc.BAM_ID
    AND
    act.BAM_ID = ?
    GROUP BY act.BAM_NAME ,
    svc.BAM_SERVICE_NAME,
    opt.BAM_OP_NAME
    ORDER BY svc.BAM_SERVICE_NAMERegards
    Anurag

  • ORA-000979: not a GROUP BY expression

    I am passing parameters to TOTAL_AMOUNT function in a package.the function waht it will do is it will
    round off the amount.when i execute this query i am egtting below exception .
    ORA-000979: not a GROUP BY expression
    SELECT
         UTILITIES_PKG.TOTAL_AMOUNT ((SELECT SUM(EII1.QTY) * EII1.PRICE
    FROM
    EMPLOYEE_ITEMS EII1
    WHERE
    EII1.EMP_ID=E.ID
    GROUP BY
                             EII1.ID,
    EII1.PRICE
    E.EMP_ID,
    E.EMPCUR_ID
    ) AMOUNT
                        FROM EMPLOYEE E,
                        EMPLOYEE_ITEMS EII
                        WHERE
                        EII1.EMP_ID=E.ID

    have you tried passing the actual parameter value to verify if the package function is the issue?
    e.g.
        select utilities_pkg.total_amount(100,20,5) from dual
    or should it be
         SELECT SUM(EII1.QTY * EII1.PRICE) tot_amt
           FROM EMPLOYEE_ITEMS EII1,
                EMPLOYEE       E
          WHERE EII1.EMP_ID = E.ID
         GROUP BY EII1.ID, EII1.PRICE

Maybe you are looking for