Erros SQL -
19/02/2015
0
Boa tarde galera, estou montando um SQL para saber a media de atendimentos por hora dos funcionários da empresa. porem chega a um ponto que depende como uso da dois erros diferentes:
1º
SQL:
Quando rodo ele assim da o seguinte erro:
"Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Dynamic SQL Error.
expression evaluation not supported."
2º - Adiciono a cláusula GROUP BY
SQL:
Quando executado assim acontece o seguinte erro:
"Invalid token.
Dynamic SQL Error.
SQL error code = -104.
user name required."
Alguém sabe onde esta o erro ou o que esta faltando ?
1º
SQL:
SELECT FUNCIONARIO, (QTDEHORAS/QTDE) AS MEDIA FROM ( SELECT no_funcionario as FUNCIONARIO, case when (HORA/3600) < 10 then '0'||(HORA/3600) else (HORA/3600) end ||'.'|| CASE when ((HORA-((HORA)/3600)*3600)/60) < 10 then '0'||((HORA-((HORA)/3600)*3600)/60) else ((HORA-((HORA)/3600)*3600)/60) end as QTDEHORAS, QTDE FROM ( SELECT CAST(SUM( EXTRACT( HOUR FROM o.hor_total ) * 3600 + EXTRACT( MINUTE FROM o.hor_total ) * 60 + EXTRACT( SECOND FROM o.hor_total ) ) AS INTEGER) AS HORA, o.no_funcionario, count(*) as QTDE FROM OS o where o.data = '19.02.2015' group by o.no_funcionario ) )
Quando rodo ele assim da o seguinte erro:
"Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Dynamic SQL Error.
expression evaluation not supported."
2º - Adiciono a cláusula GROUP BY
SQL:
SELECT FUNCIONARIO, (QTDEHORAS/QTDE) AS MEDIA FROM ( SELECT no_funcionario as FUNCIONARIO, case when (HORA/3600) < 10 then '0'||(HORA/3600) else (HORA/3600) end ||'.'|| CASE when ((HORA-((HORA)/3600)*3600)/60) < 10 then '0'||((HORA-((HORA)/3600)*3600)/60) else ((HORA-((HORA)/3600)*3600)/60) end as QTDEHORAS, QTDE FROM ( SELECT CAST(SUM( EXTRACT( HOUR FROM o.hor_total ) * 3600 + EXTRACT( MINUTE FROM o.hor_total ) * 60 + EXTRACT( SECOND FROM o.hor_total ) ) AS INTEGER) AS HORA, o.no_funcionario, count(*) as QTDE FROM OS o where o.data = '19.02.2015' group by o.no_funcionario ) ) group by funcionario
Quando executado assim acontece o seguinte erro:
"Invalid token.
Dynamic SQL Error.
SQL error code = -104.
user name required."
Alguém sabe onde esta o erro ou o que esta faltando ?
Ari Junior
Curtir tópico
+ 0
Responder
Posts
19/02/2015
Renato Rubinho
Buenas,
O primeiro comando é o mais correto.
Não tem necessidade do group by do segundo porque você não está mais agrupando os registros.
Acho que o erro está dentro do case when porque está tentando concatenar texto com número
Não entendi sua lógica da divisão pelos 3600 segundos validar se é maior que 10, daí para frente ficou difícil ajudar a corrigir o comando em sí, mas usando sua lógica, veja se isso ajuda:
Exemplo:>>> '0'||(HORA/3600)
ou é '0'|| CAST(HORA/3600 AS VARCHAR(10)) // RETORNANDO O TEXTO
ou é 0 + (HORA/3600) // RETORNANDO O NUMERO
[/code]
Veja se isso ajuda.
Abraççç
O primeiro comando é o mais correto.
Não tem necessidade do group by do segundo porque você não está mais agrupando os registros.
Acho que o erro está dentro do case when porque está tentando concatenar texto com número
Não entendi sua lógica da divisão pelos 3600 segundos validar se é maior que 10, daí para frente ficou difícil ajudar a corrigir o comando em sí, mas usando sua lógica, veja se isso ajuda:
Exemplo:>>> '0'||(HORA/3600)
ou é '0'|| CAST(HORA/3600 AS VARCHAR(10)) // RETORNANDO O TEXTO
ou é 0 + (HORA/3600) // RETORNANDO O NUMERO
[/code]
Veja se isso ajuda.
Abraççç
Responder
20/02/2015
Ari Junior
Obrigado Bruninho,
Consegui resolver de uma outra maneira já, obrigado pela resposta.
Consegui resolver de uma outra maneira já, obrigado pela resposta.
Responder
Clique aqui para fazer login e interagir na Comunidade :)