none
SUB QUERY RRS feed

  • 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 VALETRANS

    Retorna:

    "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.NOME

    Obrigado,

    Handerson

    segunda-feira, 2 de outubro de 2017 12:21

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
    segunda-feira, 2 de outubro de 2017 12:52

Todas as Respostas