Ir para conteúdo
Oliver_CNP

Erro na Sentença Subquery

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

 

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

  • Conteúdo Similar

    • Por Julio Albuquerque
      Olá!
      Preciso resolver um script MySql onde preciso efetuar cálculos como se fosse uma conta corrente, onde cada DIA tem um saldo anterior, total de entradas, total de saída e saldo atual do dia.
      Porém o próximo dia deverá ter como saldo anterior o saldo atual do dia anterior,ok?
      Bom, fiz um script que praticamente funcionou, porém em  uma subquery preciso passar o valor da linha da tabela que está sendo atualizada, mas isso não está sendo possível.
      Gostaria de ajuda, caso alguém tenha feito algo semelhante. Abaixo o script:
      update gestao_centro_financeiro_diario g1 set g1.vlsaldo_inicial = (case when idcentrofinanceirodiario = (select * from (select min(g2.idcentrofinanceirodiario) from gestao_centro_financeiro_diario g2 where g2.idcentrofinanceiro = 1) as inicial) then g1.vlsaldo_inicial else (select * from (select g3.saldo_atual from gestao_centro_financeiro_diario g3 where g3.idcentrofinanceirodiario = (select * from (select max(g4.idcentrofinanceirodiario) from gestao_centro_financeiro_diario g4 where g4.idcentrofinanceirodiario < g1.idcentrofinanceirodiario) as id)) as saldo) end), g1.saldo_atual = g1.vlsaldo_inicial + g1.total_entrada - g1.total_saida where g1.idcentrofinanceiro = 1 order by g1.data Meu problema está justamente quando no final do script, onde tem uma cláusula WHERE: ...where g4.idcentrofinanceirodiario < g1.idcentrofinanceirodiario) as id))...
      Onde a tabela g1 é a tabela que está sofrendo o UPDATE.
      Alguém pode ajudar como resolver? Desta ou de outra forma.
    • Por danicarla
      Oi gente.. tenho uma tabela de endereços e uso php para fazer dois loops para exibir as cidades e depois os bairros daquela cidade,
      fica algo + ou - assim:
      $a = mysql_query('SELECT nome_cidade FROM tab GROUP BY nome_cidade'); while($b = mysql_fetch_array($b)){ echo $b['nome_cidade'].'<br>'; $c = mysql_query('SELECT nome_bairro FROM tab WHERE nome_cidade='$b[nome_cidade]' GROUP BY nome_bairro'); while($d = mysql_fetch_array($c)){ echo $d['nome_bairro'].'<br>'; } } Alguém sabe se eu consigo fazer isso somente com uma consulta? pra não precisar incluir um loop dentro do outro
    • Por Kennyguedes
      Olá, preciso transformar a seguinte subquery para utilizar como uma table no join
       
      NVL((SELECT X.MPE_META
          FROM (SELECT MPE_IDC_ID, MPE_META
                FROM META_PERSONALIZADA_SLA M
               ORDER BY M.MPE_META DESC) X
          WHERE ROWNUM = 1
          AND X.MPE_IDC_ID = IDC_ID
          AND X.MPE_META <= APR_NEGOCIACAO_SLA), IDC_META)
       
      eu utilizo esse trecho em vários lugares dentro da minha procedure, então queria utilizar como "LEFT JOIN", assim o custo seria menor da procedure
      caso seja possivel e alguem puder ajuda
    • Por 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
    • Por 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!
×

Informação importante

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