1. Get rid of all advertisements and get unlimited access to documents by upgrading to Premium Membership. Upgrade to Premium Now and also get a Premium Badge!

ORA-00979: not a GROUP BY expression

Discussion in 'SQL PL/SQL' started by Patience, Dec 4, 2009.

  1. Patience

    Patience Guest

    Please can you tell me why I am getting the above error? I cant seem to get anything right out of this.

    Code (SQL):
      SELECT   k "CustKV",
               cu "Status", -- trim(b.first_name || ' ' ||b.last_name) "Customer",
               sg "AccountingSeg",
               ss "CreditSegment",
               SUM(CASE
                      WHEN (MONTH = '12/2009' AND CYC = 'CYCLE 1')
                           OR (MONTH = '11/2009' AND cyc <> 'CYCLE 1')
                      THEN
                         outstanding
                      ELSE
                         0
                   END)
                  "0-30days",
               SUM(CASE
                      WHEN (MONTH = '11/2009' AND CYC = 'CYCLE 1')
                           OR (MONTH = '10/2009' AND CYC <> 'CYCLE 1')
                      THEN
                         outstanding
                      ELSE
                         0
                   END)
                  "31-60days",
               SUM(CASE
                      WHEN (MONTH = '10/2009' AND CYC = 'CYCLE 1')
                           OR (MONTH = '09/2009' AND CYC <> 'CYCLE 1')
                      THEN
                         outstanding
                      ELSE
                         0
                   END)
                  "61-90days",
               SUM(CASE
                      WHEN (MONTH = '09/2009' AND CYC = 'CYCLE 1')
                           OR (MONTH = '08/2009' AND CYC <> 'CYCLE 1')
                      THEN
                         outstanding
                      ELSE
                         0
                   END)
                  "91-120days",
               SUM(CASE
                      WHEN (TO_DATE (MONTH, 'mm/yyyy') <=
                               TO_DATE ('1/08/2009', 'dd/mm/yyyy')
                            AND CYC = 'CYCLE 1')
                           OR (TO_DATE (MONTH, 'mm/yyyy') <=
                                  TO_DATE ('1/07/2009', 'dd/mm/yyyy')
                               AND CYC <> 'CYCLE 1')
                      THEN
                         outstanding
                      ELSE
                         0
                   END)
                  "Over120days",
               SUM(CASE
                      WHEN TO_DATE (MONTH, 'mm/yyyy') <=
                              TO_DATE ('12/2009', 'mm/yyyy')
                      THEN
                         outstanding
                      ELSE
                         0
                   END)
                  "Total_Due"
        FROM   (  SELECT   a.cust_keyvalue k,
                           a.bill_cycle cyc,
                           TRIM (b.first_name || ' ' || b.last_name) cu,
                           d.NAME sg,
                           f.name ss,
                           f.code csg,
                           TO_CHAR (a.BILL_PERIOD_END_DATE, 'mm/yyyy') MONTH,
                           SUM (a.OUTSTANDING) outstanding
                    FROM   vu_bill_ledgers a,
                           vu_customers b,
                           vu_cust_segments c,
                           vu_sub_segments d,
                           vu_cust_segments e,
                           vu_sub_segments f
                   WHERE       a.cust_keyvalue = b.keyvalue
                           AND a.cust_keyvalue = c.cust_keyvalue
                           AND c.subseg_segty_code = 'ACTG'
                           AND c.subseg_segty_code = d.segty_code
                           AND c.subseg_code = d.code
                           AND a.cust_keyvalue = e.cust_keyvalue
                           AND e.subseg_segty_code = '00'
                           AND e.subseg_segty_code = f.segty_code
                           AND e.subseg_code = f.code
                           AND a.bill_cycle IN
                                    ('CYCLE 1', 'CYCLE 2', 'CYCLE 3', 'CYCLE 4')
                GROUP BY   a.cust_keyvalue,
                           a.bill_cycle,
                           TRIM (b.first_name || ' ' || b.last_name),
                           --c.subseg_code,
                           d.NAME,
                           f.name,
                           f.code,
                           TO_CHAR (a.BILL_PERIOD_END_DATE, 'mm/yyyy')
                ORDER BY   TO_DATE (TO_CHAR (a.BILL_PERIOD_END_DATE, 'mm/yyyy'),
                                    'mm/yyyy') DESC)
    GROUP BY   ss
    ORDER BY   ss
     
  2. rajavu

    rajavu Forum Guru

    Messages:
    815
    Likes Received:
    52
    Trophy Points:
    610
    Location:
    @ Bangalore , India
    The Select clause is not in synch with group by clause

    Please format the question with appropriate tag for more readability.
     
  3. dariyoosh

    dariyoosh Forum Advisor

    Messages:
    118
    Likes Received:
    19
    Trophy Points:
    260