[firebase-br] Ajuda com SELECT

Hélio Oliveira hpensador em gmail.com
Seg Maio 16 20:12:41 -03 2016


Boa noite Colegas!

No select abaixo a quantidade (QTDE) não esta sendo retornada 
corretamente, isto se dá pelo fato da tabela FOLHA ter 1 ou N registros 
por SEQUENCIA enquanto a tabela FOLHA_BASE terá apenas um registro por 
SEQUENCIA, tentei usar um subselect na junção e não conseguir obter 
sucesso. Algum colega poderia me dá alguma dica...

SELECT X.COD_DIVISAO,
        COUNT(X.MATRICULA) AS QTDE,
        SUM(IIF(B.INSS = 'S', X.BC_INSS, 0)) AS BASE_INSS,
        SUM(IIF(B.IRRF = 'S', X.BC_IRRF, 0)) AS BASE_IRRF,
        SUM(IIF(B.PREV_PROPRIA = 'S', X.BC_PREV_PROPRIA, 0)) AS 
BASE_PREV_PROPRIA,
        SUM(IIF(B.FGTS = 'S', X.BC_FGTS, 0)) AS BASE_FGTS,
        SUM(IIF(A.COD_EVENTO = 2 or A.COD_EVENTO = 2, A.VALOR, 0)) AS 
SALARIO_FAMILIA,
        ((SUM(IIF(B.INSS = 'S', X.BC_INSS, 0)) *
         (SELECT (Z.PERC_INSS + (SELECT PERC_SAT * PERC_FAP
                                 FROM TABELA_INSS
                                 WHERE MES = X.MES AND ANO = X.ANO))/100
          FROM PARAMETRO Z
          WHERE Z.COD_EMPRESA = X.COD_EMPRESA)) +
         (SUM(IIF(A.COD_EVENTO = 43 or
                  A.COD_EVENTO = 44 or
                  A.COD_EVENTO = 45, A.VALOR, 0)))) AS VALOR_DEV_INSS,
         ((SUM(IIF(B.PREV_PROPRIA = 'S', X.BC_PREV_PROPRIA, 0)) *
         (SELECT Z.PERC_PREV_PROPRIA/100
          FROM PARAMETRO Z
          WHERE Z.COD_EMPRESA = X.COD_EMPRESA)) +
         (SUM(IIF(A.COD_EVENTO = 49, A.VALOR, 0)))) AS VALOR_DEV_PP
FROM FOLHA A
   JOIN FOLHA_BASE X ON (A.MES = X.MES
                     AND A.ANO = X.ANO
                     AND A.SEQUENCIA = X.SEQUENCIA
                     AND A.MATRICULA = X.MATRICULA
                     AND A.COD_EMPRESA = X.COD_EMPRESA)
   JOIN EVENTO B ON (B.COD_EVENTO = A.COD_EVENTO
                 AND B.COD_EMPRESA = X.COD_EMPRESA)
   JOIN FUNCIONARIO C ON (C.MATRICULA = A.MATRICULA
                      AND C.COD_EMPRESA = X.COD_EMPRESA)
   JOIN DIVISAO D ON (D.COD_DIVISAO = X.COD_DIVISAO
                  AND D.COD_EMPRESA = X.COD_EMPRESA)
   JOIN DEPARTAMENTO E ON (E.COD_DEPARTAMENTO = D.COD_DEPARTAMENTO
                       AND E.COD_EMPRESA = X.COD_EMPRESA)
   JOIN SECRETARIA F ON (F.COD_SECRETARIA = E.COD_SECRETARIA
                     AND F.COD_EMPRESA = X.COD_EMPRESA)
   JOIN CARGO G ON (G.COD_CARGO = X.COD_CARGO
                AND G.COD_EMPRESA = X.COD_EMPRESA)
WHERE A.VALOR > 0
GROUP BY X.COD_DIVISAO, X.COD_EMPRESA, X.MES, X.ANO





Mais detalhes sobre a lista de discussão lista