Jump to content

Recommended Posts

Citar

 Multiple columns are specified in an aggregated expression containing an outer reference. If an expression being aggregated contains an outer reference, then that outer reference must be the only column referenced in the express

 

Bom dia, 

Estou apanhando desde ontem em uma sentença Quando eu faço o select fora da sentença sozinho, os dados são demonstrados corretamente, porém, na subquery me ocorre esse erro:

Multiple columns are specified in an aggregated expression containing an outer reference. If an expression being aggregated contains an outer reference, then outer reference must be the only column referenced in the expression.

Gostaria de uma ajuda por gentileza, não tenho mais o que fazer. Sublinhei onde ocorre o erro.

Segue o Select:

SELECT

   DISTINCT FUN.IDFUNCIONARIO, FER.CHAPA, FER.INICIOPERAQUIS, FER.FIMPERAQUIS, 

   CASE WHEN FU.CODSITUACAO IN ('A', 'E') AND FER.PERIODOABERTO = 1 THEN (DATEDIFF(DAY, FER.INICIOPERAQUIS,GETDATE())/12) - (SELECT SUM(CASE WHEN PPP.NRODIASFERIAS IS NOT NULL AND FER.PERIODOABERTO = 1 THEN PPP.NRODIASFERIAS ELSE 0 END) FROM PFUFERIASPER PPP WHERE FER.CODCOLIGADA = PPP.CODCOLIGADA AND FER.CHAPA = PPP.CHAPA AND PPP.FIMPERAQUIS = FER.FIMPERAQUIS GROUP BY PPP.CHAPA) WHEN FU.CODSITUACAO IN ('C', 'D') THEN 0 ELSE FER.SALDO END VL_SALDO_FERIAS,

FROM

PFUFERIAS FER

   LEFT OUTER JOIN FOL_FUNCIONARIOS FUN ON FUN.CHAPA = FER.CHAPA

   LEFT OUTER JOIN PFUFERIASPER PER ON PER.CODCOLIGADA = FER CODCOLIGADA AND PER.CHAPA = FER.CHAPA AND PER.FIMPERAQUIS = FER.FIMPERAQUIS

   LEFT OUTER JOIN PFUNC FU ON FU.CODCOLIGADA = FER.CODCOLIGADA AND FU.CHAPA = FER.CHAPA

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Cesar Masserati Procopio
      Boa Tarde Pessoal,
       
      Estou enviando duas Imagens para ajudar a ilustrar o que estou tentando fazer.
       
      Seguinte estou batendo a minha cabeça com isso e preciso de uma luz para resolver, por favor. 

      Estou recriando o WhatsApp Web para fins de aprendizagem, estou tentando fazer uma QUERY que me retorne a lista das pessoas que estou conversando, e também a Última Mensagem da conversa que tive com a pessoa.
      EXEMPLO: 
      Retornar a lista das Pessoas que conversam com o Cesar
      Neste caso teria que me retornar a lista abaixo:
      idAmigo NomeAmigo UltimaMsg     DataMsg 8779 Adelita Pereira Machado Couto Msg CINCO - Cesar enviou para Adelita  05/07/2018 17:22 7669 Hellen Sabrina de Brito Msg TRES - Hellen enviou para Cesar  05/07/2018 12:31 63 Sandro Batista Dos Santos Msg UM - Cesar enviou para Sandro 05/07/2018 17:22 1545 Gino Cezar dos Santos Msg UM - Gino enviou para Cesar 05/07/2018 17:20
    • By symblack
      Bom dia pessoal tudo bem?
      Estou com um problema onde preciso passar os dados de colunas da tabela 1 para a subquery validar com um WHERE e não está fácil.  Ele fala que nao encontra a coluna P.uniqId.
      Abaixo minha query:
       
      SELECT  P.id, P.uniqId, ,P.localizacao, F.* FROM map AS P cross join (select qry.id,qry.uniqId,qry.localizacaofrom map AS qry where qry.uniqId = P.uniqId and qry.id < P.id order by qry.id desc limit 1) as F WHERE P.uniqId= '449548' and P.id = 1984476  Obrigado pela ajuda!
    • By Vinicius Dezem
      Boa tarde pessoa,
       
      Estou com o seguinte problema : 
       
      Tenho uma trigger com IF e nele preciso verificar se o new.campo existe em outra tabela para executar o insert
       
      Da seguinte forma :
      IF( :new.tpfis=6 or :new.icard in (select titular from controle_aux))then insert into telessvr.controle_aux values (:new.icard, :new.titular, :new.grupo, :new.grupo1, :new.grupo2, :new.grupo3, :new.grupo_sab, :new.grupo_dom, :new.grupo_fer); end if; Porem sei que dessa forma não é possível fazer, como poderia estar fazendo esta checagem ?
      Procurei por cursor ou array, porem não consegui entender muito bem como funciona.
       
      Obrigado desde já.
       
       
    • By edsonpnd
      Olá,
       
      Estou somando alguns valores de uma tabela ao valor de uma subquery que faz busca em outra tabela.
      O problema e quando essa outra tabela não tem nenhum registo com a ID que busco, assim ela zera o total do select principal.
      Consigo solucionar isso sem usar outros meios como procedure ou functions ?
       
      Obrigado.
    • By mnmn
      Olá pessoal, poderiam me ajudar?
       
      Tenho as seguintes tabelas:
      CREATE TABLE horariofuncionario ( codigo_horariofuncionario INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, codigo_statushorariofuncionario INTEGER UNSIGNED NOT NULL, codigo_funcionario INTEGER UNSIGNED NOT NULL, horario_horariofuncionario VARCHAR(5) NOT NULL, data_horariofuncionario VARCHAR(10) NOT NULL, nomeDiaSemana_horariofuncionario VARCHAR(15) NOT NULL, PRIMARY KEY(codigo_horariofuncionario), FOREIGN KEY(codigo_funcionario) REFERENCES funcionario(codigo_funcionario) ON DELETE NO ACTION ON UPDATE NO ACTION, FOREIGN KEY(codigo_statushorariofuncionario) REFERENCES statushorariofuncionario(codigo_statushorariofuncionario) ON DELETE NO ACTION ON UPDATE NO ACTION ); CREATE TABLE statushorariofuncionario ( codigo_statushorariofuncionario INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome_statushorariofuncionario VARCHAR(30) NOT NULL, PRIMARY KEY(codigo_statushorariofuncionario) ); CREATE TABLE servicosalao ( codigo_servicosalao INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, codigo_salao INT NOT NULL, codigo_servico INTEGER UNSIGNED NOT NULL, preco_servicosalao VARCHAR(20) NULL, tempo_servicosalao INTEGER UNSIGNED NULL, descricao_servicosalao VARCHAR(200) NULL, PRIMARY KEY(codigo_servicosalao), FOREIGN KEY(codigo_salao) REFERENCES salao(codigo_salao) ON DELETE NO ACTION ON UPDATE NO ACTION, FOREIGN KEY(codigo_servico) REFERENCES servico(codigo_servico) ON DELETE NO ACTION ON UPDATE NO ACTION ); Preciso selecionar os HORARIOFUNCIONARIO.horario_horariofuncionario em que o HORARIOFUNCIONARIO.codigo_statushorariofuncionario seja 1 ou 3 e que não contenha nenhum registro na tabela horariofuncionario em que o HORARIOFUNCIONARIO.horario_horariofuncionario esteja entre o HORARIOFUNCIONARIO.horario_horariofuncionario e o HORARIOFUNCIONARIO.horario_horariofuncionario + SERVICOSALAO.tempo_servicosalao e o HORARIOFUNCIONARIO.codigo_statushorariofuncionario seja igual a 2.
       
      Então tenho a query:
      SELECT hf.horario_horariofuncionario FROM horariofuncionario hf WHERE hf.codigo_statushorariofuncionario IN (1,3) HAVING (SELECT COUNT(hf.codigo_horariofuncionario) FROM horariofuncionario hf NATURAL JOIN servicosalao ss WHERE hf.codigo_statushorariofuncionario = 2 AND STR_TO_DATE(hf.horario_horariofuncionario,'%H:%i') BETWEEN STR_TO_DATE(hf.horario_horariofuncionario,'%H:%i') AND SEC_TO_TIME( SUM( TIME_TO_SEC( STR_TO_DATE(hf.horario_horariofuncionario,'%H:%i') ) + TIME_TO_SEC( STR_TO_DATE(ss.tempo_servicosalao,'%H:%i') ) ) ) ) < 1; Está retornando o erro: Invalid use of group function ErrorNr 1111
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.