ORA-00937: não é uma função de grupo de grupo simples

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Dualogic
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Ter, 16 Ago 2016 11:36 am

Prezados,

Andei meio afastado do mundo de PL/SQL e estou retomando agora para desenvolver alguns indicadores para um cliente, ocorre que na minha query, mesmo eu colocando o group by corretamente, me é apresentado o erro ORA-00937, já fiz de tudo e não consigo resolver. Poderiam me auxiliar por gentileza?
A ideia é que a query retorne a evolução mensal do ano, com quebra pelo mês e e pela informação de que se existe ou não avaliação da equipe de enfermagem.

Segue código abaixo.

Selecionar tudo

SELECT TO_CHAR(a.dt_inicio_real,'mm') dt_cirurgia,
  DECODE(obter_se_atend_sae(a.nr_atendimento),'S','Com SAE','N','Sem SAE',NULL) ds_possui_sae,
  SUM(DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 1, COUNT(a.nr_cirurgia), 0)) vl_janeiro,
  SUM(DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 2, COUNT(1), 0)) vl_fevereiro,
  SUM(DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 3, COUNT(1), 0)) vl_marco,
  SUM(DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 4, COUNT(1), 0)) vl_abril,
  SUM(DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 5, COUNT(1), 0)) vl_maio,
  SUM(DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 6, COUNT(1), 0)) vl_junho,
  SUM(DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 7, COUNT(1), 0)) vl_julho,
  SUM(DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 8, COUNT(1), 0)) vl_agosto,
  SUM(DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 9, COUNT(1), 0)) vl_setembro,
  SUM(DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 10, COUNT(1), 0)) vl_outubro,
  SUM(DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 11, COUNT(1), 0)) vl_novembro,
  SUM(DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 12, COUNT(1), 0)) vl_dezembro
FROM cirurgia a
GROUP BY TO_CHAR(a.dt_inicio_real,'mm'),
  DECODE(obter_se_atend_sae(a.nr_atendimento),'S','Com SAE','N','Sem SAE',NULL)

E este é o erro apresentado.
ORA-00937: não é uma função de grupo de grupo simples
00937. 00000 - "not a single-group group function"
*Cause:
*Action:
Erro na linha: 1 Coluna: 16
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Ta estranho mesmo.
Tentou rodar isso usando um SUB-SELECT pro GROUP BY ?
(Só por curiosidade).

Algo assim:

Selecionar tudo

SELECT 
  dt_cirurgia 
, ds_possui_sae
, SUM (vl_janeiro)  vl_janeiro
, SUM (vl_fevereiro) vl_fevereiro
.
.
.
FROM (   
  SELECT TO_CHAR(a.dt_inicio_real,'mm') dt_cirurgia,
  DECODE(obter_se_atend_sae(a.nr_atendimento),'S','Com SAE','N','Sem SAE',NULL) ds_possui_sae,
  DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 1, COUNT(a.nr_cirurgia), 0) vl_janeiro,
  DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 2, COUNT(1), 0) vl_fevereiro,
  DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 3, COUNT(1), 0) vl_marco,
  DECODE(to_number(TO_CHAR(a.dt_inicio_real, 'mm')), 4, COUNT(1), 0) vl_abril,  
  .
  .
  . 
  )
GROUP BY dt_cirurgia, ds_possui_sae;
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes