Usuário com melhor resposta
SUB QUERY

Pergunta
-
Bom dia.
Preciso retornar um valor se determinado campo for maior que ZERO.
Fiz dessa forma:
(SELECT PFUNC.SALARIO * 0.06 FROM PFUNC
WHERE PFUNC.DIASUTEISMES > '0') AS VALETRANSRetorna:
"Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression."
Abaixo, sentença completa.
SELECT
PSECAO.CODDEPTO AS SECÃO,
PPESSOA.NOME AS FUNCIONARIO,
PFUNCAO.NOME AS FUNÇÃO,
PFUNC.SALARIO AS SALARIO_BASE,
PFPERFF.SALARIOPAGO AS SALARIO_BRUTO,
ROUND (PFPERFF.SALARIOPAGO * 0.288 ,2) AS INSS,
ROUND (PFPERFF.SALARIOPAGO * 0.08 ,2) AS FGTS,
ROUND (PFPERFF.SALARIOPAGO /3/12 ,2) AS FERIAS_UM_TERÇO,
ROUND (PFPERFF.SALARIOPAGO /12 , 2) AS FERIAS_1_12,
ROUND (PFUNC.SALARIO /3/12 ,2) AS RETORNO_DE_FERIAS,
ROUND (PFUNC.SALARIO /3/12 * 0.288 + PFPERFF.SALARIOPAGO /3/12 * 0.288 + PFPERFF.SALARIOPAGO /12 * 0.288 ,2) AS INSS_SRETORNOETC,
ROUND (PFUNC.SALARIO /3/12 * 0.08 + PFPERFF.SALARIOPAGO /3/12 * 0.08 + PFPERFF.SALARIOPAGO /12 * 0.08 ,2) AS FGTS_SRETORNOETC,(SELECT PFUNC.SALARIO * 0.06 FROM PFUNC
WHERE PFUNC.DIASUTEISMES > '0') AS VALETRANS
FROM PSECAO, PPESSOA, PFUNCAO, PFUNC, PFPERFF
WHERE
PFUNC.CODCOLIGADA=PSECAO.CODCOLIGADA AND
PFUNC.CODSECAO=PSECAO.CODIGO AND
PFUNC.CODCOLIGADA=PFPERFF.CODCOLIGADA AND
PFUNC.CHAPA=PFPERFF.CHAPA AND
PFUNC.CODPESSOA= PPESSOA.CODIGO AND
PFUNCAO.CODCOLIGADA=PFUNC.CODCOLIGADA AND
PFUNCAO.CODIGO=PFUNC.CODFUNCAO AND
PFPERFF.ANOCOMP ='2017' AND
PFPERFF.MESCOMP = '08' AND
PFPERFF.NROPERIODO = '2' AND
PSECAO.CODDEPTO = '1' and
PFUNC.CODCOLIGADA = '1'
ORDER BY PPESSOA.NOMEObrigado,
Handerson
Respostas
-
Bom dia,
Pelo que vi a tabela utilizada na subquery é utilizada na query, então talvez a subquery não seja necessária.
Experimente fazer uns testes com o trecho abaixo no lugar da subquery para ver se é obtido o resultado esperado:
case when PFUNC.DIASUTEISMES > '0' then PFUNC.SALARIO * 0.06 else 0 end AS VALETRANS
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Handerson Xavier segunda-feira, 2 de outubro de 2017 13:03
Todas as Respostas
-
Bom dia,
Pelo que vi a tabela utilizada na subquery é utilizada na query, então talvez a subquery não seja necessária.
Experimente fazer uns testes com o trecho abaixo no lugar da subquery para ver se é obtido o resultado esperado:
case when PFUNC.DIASUTEISMES > '0' then PFUNC.SALARIO * 0.06 else 0 end AS VALETRANS
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Handerson Xavier segunda-feira, 2 de outubro de 2017 13:03
-