Solved

ORACLE SQL:  Error single group function

Posted on 2010-11-18
5
400 Views
Last Modified: 2012-06-27
Experts,

I am using Oracle 10G and I am getting this messagewhen I am run this function.
 Execute:
      [RESULT] = "NOCREPORTS"."TEST_NOC_KEY_INDICATOR_REPORT"

---------------------------------------------------------------------------------------------------

I usually works but I just added values for a column named ENDING_PLAN and the query that is
(SELECT COUNT(*) FROM ARADMIN.PLATFORM_EVENT WHERE UDF_CONVERT_UNIX_DATETIME(DATE_CREATED, 'US/Eastern') >= (TRUNC(SYSDATE) - INTERVAL '16' HOUR) AND UDF_CONVERT_UNIX_DATETIME(DATE_CREATED, 'US/Eastern') < (TRUNC(SYSDATE) - INTERVAL '8' HOUR) AND NOC_MANAGED = 0)

I am not sure how I should add this into the function.  Please see below  Thanks



INSERT INTO noc_key_indicator_values (field_id, field_value, report_id, report_date, show_date, KEY_INDICATOR, ENDING_PLAN)

   SELECT   'S8_1', COUNT (npe1.ticket_id), 'SO-DYLY-01', TRUNC (SYSDATE), TO_CHAR (SYSDATE - 1, 'DAY'), '  # BHN Platform Events Triaged & Dispatched <=15 Minutes of Engagement', (SELECT COUNT(*) FROM ARADMIN.PLATFORM_EVENT WHERE UDF_CONVERT_UNIX_DATETIME(DATE_CREATED, 'US/Eastern') >= (TRUNC(SYSDATE) - INTERVAL '24' HOUR) AND UDF_CONVERT_UNIX_DATETIME(DATE_CREATED, 'US/Eastern') < (TRUNC(SYSDATE) - INTERVAL '16' HOUR) AND NOC_MANAGED = 0)

     FROM   (SELECT   *

               FROM   nocreports.tts_tkt_assignment_history

              WHERE   tah_request_id IN

                            (  SELECT   MIN (tah_request_id)

                                 FROM   nocreports.tts_tkt_assignment_history

                                WHERE       tah_assign_start_date >= (TRUNC (SYSDATE) - INTERVAL '24' HOUR)

                                        AND tah_assign_start_date < (TRUNC (SYSDATE) - INTERVAL '16' HOUR)

                                        AND tah_current_combined_group = 'National-Surveillance'

                                        AND tah_form_name = 'Platform Event'

                             GROUP BY   tah_ticket_id)) ia1,

            (SELECT   ticket_id

               FROM   aradmin.platform_event

              WHERE       udf_convert_unix_datetime (date_created, 'US/Eastern') >= (TRUNC (SYSDATE) - INTERVAL '24' HOUR)

                      AND udf_convert_unix_datetime (date_created, 'US/Eastern') < (TRUNC (SYSDATE) - INTERVAL '16' HOUR)

                      AND noc_managed = 0) npe1

    WHERE   npe1.ticket_id = ia1.tah_ticket_id AND tah_assignment_seconds <= 900;

Open in new window

0
Comment
Question by:Maliki Hassani
  • 3
  • 2
5 Comments
 
LVL 73

Expert Comment

by:sdstuber
Comment Utility
you have used an aggregate (COUNT)  but you haven't specified a group by clause

every non-aggregate /non-constant column must be in a group by
0
 

Author Comment

by:Maliki Hassani
Comment Utility
Sdstuber:  Do you know of a way to rearrange this function so it can work?
0
 
LVL 73

Accepted Solution

by:
sdstuber earned 500 total points
Comment Utility
try this...


INSERT INTO noc_key_indicator_values(field_id,
                                     field_value,
                                     report_id,
                                     report_date,
                                     show_date,
                                     key_indicator,
                                     ending_plan
                                    )
    SELECT 'S8_1',
           cnt,
           'SO-DYLY-01',
           TRUNC(SYSDATE),
           TO_CHAR(SYSDATE - 1, 'DAY'),
           '  # BHN Platform Events Triaged & Dispatched <=15 Minutes of Engagement',
           (SELECT COUNT(*)
              FROM aradmin.platform_event
             WHERE udf_convert_unix_datetime(date_created, 'US/Eastern') >=
                       (TRUNC(SYSDATE) - INTERVAL '24' HOUR)
                   AND udf_convert_unix_datetime(date_created, 'US/Eastern') <
                           (TRUNC(SYSDATE) - INTERVAL '16' HOUR)
                   AND noc_managed = 0)
      FROM (SELECT COUNT(npe1.ticket_id) cnt
              FROM (SELECT *
                      FROM nocreports.tts_tkt_assignment_history
                     WHERE tah_request_id IN
                               (SELECT   MIN(tah_request_id)
                                    FROM nocreports.tts_tkt_assignment_history
                                   WHERE tah_assign_start_date >=
                                             (TRUNC(SYSDATE) - INTERVAL '24' HOUR)
                                         AND tah_assign_start_date <
                                                 (TRUNC(SYSDATE)
                                                  - INTERVAL '16' HOUR)
                                         AND tah_current_combined_group =
                                                 'National-Surveillance'
                                         AND tah_form_name = 'Platform Event'
                                GROUP BY tah_ticket_id)) ia1,
                   (SELECT ticket_id
                      FROM aradmin.platform_event
                     WHERE udf_convert_unix_datetime(date_created,
                                                     'US/Eastern'
                                                    ) >=
                               (TRUNC(SYSDATE) - INTERVAL '24' HOUR)
                           AND udf_convert_unix_datetime(date_created,
                                                         'US/Eastern'
                                                        ) <
                                   (TRUNC(SYSDATE) - INTERVAL '16' HOUR)
                           AND noc_managed = 0) npe1
             WHERE npe1.ticket_id = ia1.tah_ticket_id
                   AND tah_assignment_seconds <= 900);
0
 
LVL 73

Expert Comment

by:sdstuber
Comment Utility
I moved the aggregate out of the same scope as the subquery
0
 

Author Comment

by:Maliki Hassani
Comment Utility
Great Stuff..  You are so smart!!
0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

Displaying an arrayList in a listView using the default adapter is rarely the best solution. To get full control of your display data, and to be able to refresh it after editing, requires the use of a custom adapter.
Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
This video shows how to copy a database user from one database to another user DBMS_METADATA.  It also shows how to copy a user's permissions and discusses password hash differences between Oracle 10g and 11g.
This video shows how to recover a database from a user managed backup

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now