Ir para conteúdo
Entre para seguir isso  
josePeixoto

Erro 'Group By'

Recommended Posts

Olá, alguém poderia me informar onde está o erro dessa consulta?

SELECT DISTINCT relatorio.CD_RELATORIO,
  relatorio.DT_ATUALIZACAO,
  relatorio.DS_TITULO descricao,
  obter_usuario_pf(relatorio_documentacao.CD_PF_SOLIC) Solicitante,
  obter_usuario_pf(relatorio_documentacao.CD_PF_CRIADOR) Criador,
  wm_concat(perfil.ds_perfil) Perfil
FROM relatorio
INNER JOIN relatorio_documentacao
ON relatorio.NM_USUARIO = relatorio_documentacao.NM_USUARIO
INNER JOIN relatorio_perfil
ON relatorio_documentacao.NR_SEQ_RELATORIO = relatorio_perfil.NR_SEQ_RELATORIO
INNER JOIN PERFIL
ON relatorio_perfil.cd_perfil                               = perfil.cd_perfil
WHERE obter_usuario_pf(relatorio_documentacao.CD_PF_SOLIC) IS NOT NULL
AND obter_usuario_pf(relatorio_documentacao.CD_PF_CRIADOR) IS NOT NULL
AND relatorio.DT_ATUALIZACAO BETWEEN :dt_inicio AND :dt_fim
GROUP BY perfil.ds_perfil,
  relatorio.CD_RELATORIO,
  relatorio.DT_ATUALIZACAO,
  relatorio.DS_TITULO
ORDER BY 4,2,1

Ele está dando o erro: ORA-00979: não é uma expressão GROUP BY.

Obrigado desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é preciso o "group by" pois não é sql agregadora (sum,count,max etc) , caso seja todas as colunas do select (menos a de grupo) devem estar no group by.

O "distinct" dispinsa o group by.

exemplo

SELECT relatorio.CD_RELATORIO,
  relatorio.DT_ATUALIZACAO,
  relatorio.DS_TITULO descricao,
  obter_usuario_pf(relatorio_documentacao.CD_PF_SOLIC) Solicitante,
  obter_usuario_pf(relatorio_documentacao.CD_PF_CRIADOR) Criador,
  wm_concat(perfil.ds_perfil) Perfil,
  count(*) qtd
FROM relatorio
...
GROUP BY relatorio.CD_RELATORIO,
  relatorio.DT_ATUALIZACAO,
  relatorio.DS_TITULO ,
  obter_usuario_pf(relatorio_documentacao.CD_PF_SOLIC) ,
  obter_usuario_pf(relatorio_documentacao.CD_PF_CRIADOR) ,
  wm_concat(perfil.ds_perfil)
ORDER BY 4,2,1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

Entre para seguir isso  

  • Próximos Eventos

  • Conteúdo Similar

    • Por iniciante.ph
      Olá
      Tenho um banco que tem armazenado alunos e cursos:
      Os dados dos alunos estão na tabela usuários
      A tabela acontecimentos guarda o id do aluno e  os ids dos cursos que eles se inscreveram
      A tabela eventos guarda os dados de cada curso
      Preciso fazer um relatório de todos alunos inscritos, que pega os dados de cada tabela e mostra o nome do aluno, nome do curso, gostaria de uma dica de como juntar esses dados no mesmo relatório fazendo apenas uma consulta
      Obrigado
       
    • Por Thiago Benevides
      create table teste1(
      ide int not null primary key,
      nome varchar(99) not null);
       
      create table teste2(
      ide2 int not null primary key,
      nome_teste varchar(99) not null,
      nome_teste1 int not null,
      foreign key(nome_teste1) references teste1(ide));
       
      create table teste3(
      ide3 int not null primary key,
      nome_testres varchar(99) not null,
      nome_teste2 int not null,
      foreign key(nome_teste2) references teste2(ide2));
       
      if (create table teste1 == true)
        create table teste2;
      if(create table teste2 == true)
        create table teste3;
        
       
      select * from teste2
       
       
       
      Acho q pela lógica do if else já deu pra entender a que ponto quero chegar kkkkkk. será que alguém pode me ajudar nisso. Como faço pra essa lógica funcionar.
    • Por Jucelioj
      Bom dia,
       
      Estou explorando esse universo do banco Oracle e me deparei uma situação que pode ser fácil ou não de ser resolvida.
       
      Eu tenho uma Tabela que apresenta as datas das compras, mas eu gostaria de gerar um Select que listar a data inicio e fim de um determinado mês e que nessa lista aparece as datas que teve compra ou não .
       
      Desde já agradeço a Ajuda.
       
      Ex:

       
       

       
       
    • Por thiago riccieri
      Como posso melhorar a performance desta consulta mysqli. Ao utilizar o ORDER BY  LIMIT, a performance cai de mais, ficando muito lento.
       
      SELECT  e.idequipamento, e.equipamento, e.circuito, e.conjunto, e.zona, e.idlocalidade, e.trecho, e.soma, e.idregiao, e.idsupervisao, e.kmrede, e.clientes,  r.mes1, r.mes2,  g.relatorioanalitico, g.soma, g.iasc, g.planopodas, g.citycity, g.energisaparceira, g.outros  FROM equipamento AS e  INNER JOIN rank AS r ON (e.idequipamento = r.idequipamento) INNER JOIN gestao AS g ON (e.idequipamento = g.idequipamento)             WHERE r.mes1>0  AND e.idsupervisao='1' ORDER BY r.mes1 ASC LIMIT 50  
    • Por Marcones Borges
      Bom dia,
      Pessoal preciso de uma ajuda aqui.
       
      Tenho um formulário de cadastro e para evitar retrabalho, gostaria de ajuda.
      Olha o código aqui.

                  <legend><h1> Cadastro de Coordenador</h1></legend>                          <form action="action_coordenador.php" method="post" id='form-contato' enctype='multipart/form-data'>                 <div class="row">                 <div class="box-body">               <div class="row">               <div class="col-xs-2">                   <label for="codigo">Código</label>                   <input type="text" class="form-control" id="codigo" name="codigo" placeholder="Infome o Código">                   <span class='msg-erro msg-nome'></span>                 </div>                  <div class="col-xs-4">                   <label for="nome">Nome</label>                   <input type="text" class="form-control" id="nome" name="nome" disabled>                  </div>               <div class="col-xs-3">                   <label for="presidente">Presidente</label>                   <input type="text" class="form-control" id="nome" name="nome" placeholder="Informe o Nome">                   <span class='msg-erro msg-email'></span>                 </div>                         <div class="col-xs-4">                   <label for="celular">Celular</label>                   <input type="celular" class="form-control" id="celular" maxlength="13" name="celular" placeholder="Informe o Celular">                   <span class='msg-erro msg-celular'></span>                 </div>

      Tenho a tabela membro que já tem estes dados que por sua vez enviara a tabela coordenador.
      Quando eu digitar o código e sair da input ou teclar enter ele localizar automático o povoar os inputs.. 
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.

Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: