Запрос Oracle с ошибкой «не выражение GROUP BY» - PullRequest
1 голос
/ 23 октября 2019

Здравствуйте. Я сделал запрос, чтобы получить сотрудника первым и последним временем для диапазона дат, для этого я использовал функции max и min, чтобы получить первое и последнее время, вот мой запрос

     select 
     fullname,
     "IN",
     out
     from
     (
            select
            fullname,direction,
            employment.employeeid,NATIONALID,departmentname,designation.designationname,
            min(case when direction = 'IN' then to_date(to_char(((TO_DATE('19700101','yyyymmdd') + (tstamp/24/60/60) + 6/24)), 'dd-mm-yyyy hh12:mi:ss PM'), 'dd-mm-yyyy hh:mi:ss pm') end) "IN",
            max(case when direction = 'OUT' then to_date(to_char(((TO_DATE('19700101','yyyymmdd') + (tstamp/24/60/60) + 6/24)), 'dd-mm-yyyy hh12:mi:ss PM'), 'dd-mm-yyyy hh:mi:ss pm') end) out
            from eofficeuat.entrylog_cpa
            join eofficeuat.employee on entrylog_cpa.hrrecordid=employee.hrrecordid
            join eofficeuat.employment on employee.hrrecordid=employment.hrrecordid
            join eofficeuat.designation on employment.designationid=designation.designationid
            join eofficeuat.department on employment.departmentid=department.departmentid
            where department.departmentname = 'SECURITY'
            and tstamp >= 1567274400 and tstamp < 1569862800 
            and eofficeuat.employment.employeeid='022013'
            group by eofficeuat.employment.employeeid
            order by tstamp asc

      )

но я получаю эту ошибку

      ORA-00979: not a GROUP BY expression

пожалуйста, скажите мне, как я могу это исправить.

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Столбцы, которые не агрегированы, должны быть частью предложения GROUP BY, что означает следующее:

    GROUP BY fullname,
             direction,
             employment.employeeid,
             NATIONALID,
             departmentname,
             designation.designationname

Кроме того, вы, вероятно, захотите переместить ORDER BY из встроенного представления.

0 голосов
/ 23 октября 2019

включает неагрегированные столбцы в предложении group by, также вы должны полностью включить регистр в предложении group by. попробуйте ниже запрос

select 
     fullname,
     "IN",
     out
     from
     (
            select
            fullname,direction,
            employment.employeeid,NATIONALID,departmentname,designation.designationname,
            min(case when direction = 'IN' then to_date(to_char(((TO_DATE('19700101','yyyymmdd') + (tstamp/24/60/60) + 6/24)), 'dd-mm-yyyy hh12:mi:ss PM'), 'dd-mm-yyyy hh:mi:ss pm') end) "IN",
            max(case when direction = 'OUT' then to_date(to_char(((TO_DATE('19700101','yyyymmdd') + (tstamp/24/60/60) + 6/24)), 'dd-mm-yyyy hh12:mi:ss PM'), 'dd-mm-yyyy hh:mi:ss pm') end) out
            from eofficeuat.entrylog_cpa
            join eofficeuat.employee on entrylog_cpa.hrrecordid=employee.hrrecordid
            join eofficeuat.employment on employee.hrrecordid=employment.hrrecordid
            join eofficeuat.designation on employment.designationid=designation.designationid
            join eofficeuat.department on employment.departmentid=department.departmentid
            where department.departmentname = 'SECURITY'
            and tstamp >= 1567274400 and tstamp < 1569862800 
            and eofficeuat.employment.employeeid='022013'
            group by 
            fullname,
            direction,
            employment.employeeid,
            NATIONALID,
            departmentname,
            designation.designationname,
            case when direction = 'IN' then to_date(to_char(((TO_DATE('19700101','yyyymmdd') + (tstamp/24/60/60) + 6/24)), 'dd-mm-yyyy hh12:mi:ss PM'), 'dd-mm-yyyy hh:mi:ss pm') end,
            case when direction = 'OUT' then to_date(to_char(((TO_DATE('19700101','yyyymmdd') + (tstamp/24/60/60) + 6/24)), 'dd-mm-yyyy hh12:mi:ss PM'), 'dd-mm-yyyy hh:mi:ss pm') end
            order by tstamp asc

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