Erros SQL -
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
Curtidas 0
Respostas
Renato Rubinho
19/02/2015
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ççç
GOSTEI 0
Ari Junior
19/02/2015
Obrigado Bruninho,
Consegui resolver de uma outra maneira já, obrigado pela resposta.
Consegui resolver de uma outra maneira já, obrigado pela resposta.
GOSTEI 0