Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×

Ajuda sentença SQL


Paulo Barbosa

Posts Recomendados


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  3
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  25
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Olá a todos, sou novo com geração de relatório no RM e gostaria de uma ajuda de vocês para a sentença abaixo:

SELECT

PFUNC.CHAPA AS MATRICULA,

PPESSOA.NOME AS NOME,

PFUNCAO.NOME AS FUNCAO,

PCONTAS.GRPCONTA AS GRUPOCONTA,

PFUNC.INTEGRCONTABIL AS INTGER,

PCONTAS.CONTASALDUS AS CONTACONTABIL,

PSECAO.DESCRICAO AS DEPARTAMENTO,

PFFINANC.CODEVENTO AS CODIGO,

PEVENTO.DESCRICAO AS DESCEVENTO,

(CASE WHEN PEVENTO.PROVDESCBASE ='D' THEN (PFFINANC.VALOR * -1)

WHEN PEVENTO.PROVDESCBASE = 'P' THEN PFFINANC.VALOR END) AS VALOR,

DTPAGTO AS PAGAMENTO,

PFUNC.CODSITUACAO

FROM PFUNC(NOLOCK), PPESSOA(NOLOCK), PSECAO(NOLOCK), PFUNCAO(NOLOCK), PEVENTO(NOLOCK), PFFINANC(NOLOCK), PCONTAS(NOLOCK), PCODINTCONTFUNC(NOLOCK)

WHERE

PFFINANC.MESCOMP = '3' AND

PFFINANC.ANOCOMP = '2009' AND

PFFINANC.VALOR <> 0 AND

(PFUNC.CODPESSOA = PPESSOA.CODIGO AND

PFUNCAO.CODCOLIGADA = PFUNC.CODCOLIGADA AND

PFUNCAO.CODIGO = PFUNC.CODFUNCAO AND

PFUNC.CODCOLIGADA = PFUNC.CODCOLIGADA AND

PFUNC.CODSECAO = PSECAO.CODIGO AND

PEVENTO.CODCOLIGADA = PFUNC.CODCOLIGADA AND

PFFINANC.CODCOLIGADA = PEVENTO.CODCOLIGADA AND

PFFINANC.CODEVENTO = PEVENTO.CODIGO AND

PFUNC.CODCOLIGADA = PFFINANC.CODCOLIGADA AND

PFUNC.CHAPA = PFFINANC.CHAPA AND

PFUNC.CODCOLIGADA = PCODINTCONTFUNC.CODCOLIGADA AND

PFUNC.INTEGRCONTABIL = PCODINTCONTFUNC.CODCLIENTE AND

PCONTAS.CODCOLIGADA = PCODINTCONTFUNC.CODCOLIGADA AND

PCONTAS.INTEGRCFUNC = PCODINTCONTFUNC.CODCLIENTE AND

PEVENTO.PROVDESCBASE <> 'B')

O objetivo deste relatório seria obter uma relação dos funcionários onde a soma dos valores dos eventos seria igual ao valor liquido gerado pela folha de pagamento ou o "envelope" demonstrado no RM Labore e a conta contábil as quais foram alocados , porém quando "rodo" ele gera muitas informações repetidas.

Acredito ser um erro de vinculo de tabelas, pois cada evento (PFFINANC.CODEVENTO) tem um grupo vinculado (PCONTAS.GRPCONTA) e neste grupo que há a conta contábil destacada e como tenho mais de 1000 eventos e vários vinculado ao mesmo grupo acredito ser a causa das repetições.

ObS: já tentei suporte e não obtive resultados....

Desde já agradeço a atenção.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  134
  • Tópicos/Dia:  0.02
  • Meu Conteúdo:  1.225
  • Conteúdo/Dia:  0.19
  • Reputação:   2
  • Pontos/Conquistas:  7.400
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Dispositivo:  Windows

Como todas essas tabelas sao relaciondadas entre si, nao vejo motivo para usar sentenças SQL. Use o gerador usando varias LDS, Totalizadores, etc.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  3
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  25
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

olá...obrigado pela resposta...

Meu problema é que uma das exigências do usuário seria que o relatório deveria ser em planilha ou cubo para permitir exportar para excel...

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  21
  • Conteúdo/Dia:  0.00
  • Reputação:   1
  • Pontos/Conquistas:  145
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  40

Tenta este select ai!

SELECT

PFUNC.CHAPA AS MATRICULA,

PFUNC.NOME AS NOME,

PFUNCAO.NOME AS FUNCAO,

PCONTAS.GRPCONTA AS GRUPOCONTA,

PFUNC.INTEGRCONTABIL AS INTGER,

PCONTAS.CONTASALDUS AS CONTACONTABIL,

PSECAO.DESCRICAO AS DEPARTAMENTO,

PFFINANC.CODEVENTO AS CODIGO,

PEVENTO.DESCRICAO AS DESCEVENTO,

(

CASE

WHEN PEVENTO.PROVDESCBASE ='D'

THEN (PFFINANC.VALOR * -1)

WHEN PEVENTO.PROVDESCBASE = 'P'

THEN PFFINANC.VALOR

END

) AS VALOR,

DTPAGTO AS PAGAMENTO,

PFUNC.CODSITUACAO

FROM PFUNC (NOLOCK)

JOIN PSECAO (NOLOCK) ON ( PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO )

JOIN PFUNCAO (NOLOCK) ON ( PFUNCAO.CODCOLIGADA = PFUNC.CODCOLIGADA AND PFUNCAO.CODIGO = PFUNC.CODFUNCAO )

JOIN PFFINANC (NOLOCK) ON ( PFFINANC.CODCOLIGADA = PFUNC.CODCOLIGADA AND PFUNC.CHAPA = PFFINANC.CHAPA )

JOIN PEVENTO (NOLOCK) ON ( PEVENTO.CODCOLIGADA = PFFINANC.CODCOLIGADA AND PEVENTO.CODIGO = PFFINANC.CODEVENTO )

LEFT JOIN PCODINTCONTFUNC (NOLOCK) ON ( PFUNC.CODCOLIGADA = PCODINTCONTFUNC.CODCOLIGADA AND PFUNC.INTEGRCONTABIL = PCODINTCONTFUNC.CODCLIENTE )

LEFT JOIN PCONTAS (NOLOCK) ON ( PCONTAS.CODCOLIGADA = PCODINTCONTFUNC.CODCOLIGADA AND PCONTAS.INTEGRCFUNC = PCODINTCONTFUNC.CODCLIENTE )

WHERE PFFINANC.MESCOMP = '3'

AND PFFINANC.ANOCOMP = '2009'

AND PFFINANC.VALOR <> 0

AND PEVENTO.PROVDESCBASE <> 'B'

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  3
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  25
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Obrigado pela resposta Dayana mas continou repetindo ...

abaixo segue lista do resultado apresentado para um evento... peguei apenas algumas linhas pois apresenta 456 resultados e deveriam constar apenas 8.

CHAPA NOME GRUPO INT.GER CONTACONTABIL DEPTO. EVENTO

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 1001 7.04 1.10.15.09.002 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 1002 7.04 2.10.13.01.003 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 1003 7.04 1.10.15.09.004 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 1004 7.04 1.10.15.09.005 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 1005 7.04 1.10.15.11.007 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 2001 7.04 2.10.13.01.001 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 2002 7.04 2.10.13.01.002 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 2004 7.04 1.10.15.09.012 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 2005 7.04 2.10.13.01.005 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 2006 7.04 2.10.13.01.006 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 2007 7.04 2.10.13.02.001 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 2008 7.04 2.10.13.02.002 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 2009 7.04 2.10.13.02.003 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 2010 7.04 2.10.13.02.004 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 2011 7.04 2.10.21.07.001 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 2012 7.04 2.10.13.03.001 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 2013 7.04 2.10.13.03.002 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 2014 7.04 2.10.15.01.001 TI (012222) 0001

000293 PAULO ROBERTO DE OLIVEIRA BARBOSA ASSISTENTE DE TI 2017 7.04 2.10.15.02.001 TI (012222) 0001

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  14
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  80
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  46

Boa tarde, também não tenho muita experiência em sentenças sql, mas quando este tipo de erro acontece comigo é porque está faltando mais alguma comparação no WHERE, da uma olhada nas tabelas que está utilizando e tenta achar mais e se necessário acrescente outra tabela só para faze a comparação no WHERE sem precisar lançar no select. E outra coisa, se vc rodar a sentença no query analizer o resultado da repetição é o mesmo?

Att

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  21
  • Conteúdo/Dia:  0.00
  • Reputação:   1
  • Pontos/Conquistas:  145
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  40

Olha só... sua consulta retorna todos os eventos de um determinado mês... ex: salario, inss, ... talvez se vc retirar o codigo e descrição do evento e usar as funções sum no select e group by...

talvez dê certo!

Sorry!

Link para comentar
Compartilhar em outros sites

  • 2 semanas depois...

  • Tópicos Que Criei:  3
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  41
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  235
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  44

Concordo com a Dayana,

Ta duplicando por causa dos eventos, se usar um distinct e tirar o codigo, a descrição, o valor e a data não terá mais duplicações.

Da uma olhada se é isso.

SELECT DISTINCT

PFUNC.CHAPA AS MATRICULA,

PFUNC.NOME AS NOME,

PFUNCAO.NOME AS FUNCAO,

PCONTAS.GRPCONTA AS GRUPOCONTA,

PFUNC.INTEGRCONTABIL AS INTGER,

PCONTAS.CONTASALDUS AS CONTACONTABIL,

PSECAO.DESCRICAO AS DEPARTAMENTO,

--PFFINANC.CODEVENTO AS CODIGO,

--PEVENTO.DESCRICAO AS DESCEVENTO,

--(

--CASE

--WHEN PEVENTO.PROVDESCBASE ='D'

--THEN (PFFINANC.VALOR * -1)

--WHEN PEVENTO.PROVDESCBASE = 'P'

--THEN PFFINANC.VALOR

--END

--) AS VALOR,

--DTPAGTO AS PAGAMENTO,

PFUNC.CODSITUACAO

FROM PFUNC (NOLOCK)

JOIN PSECAO (NOLOCK) ON ( PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO )

JOIN PFUNCAO (NOLOCK) ON ( PFUNCAO.CODCOLIGADA = PFUNC.CODCOLIGADA AND PFUNCAO.CODIGO = PFUNC.CODFUNCAO )

JOIN PFFINANC (NOLOCK) ON ( PFFINANC.CODCOLIGADA = PFUNC.CODCOLIGADA AND PFUNC.CHAPA = PFFINANC.CHAPA )

JOIN PEVENTO (NOLOCK) ON ( PEVENTO.CODCOLIGADA = PFFINANC.CODCOLIGADA AND PEVENTO.CODIGO = PFFINANC.CODEVENTO )

LEFT JOIN PCODINTCONTFUNC (NOLOCK) ON ( PFUNC.CODCOLIGADA = PCODINTCONTFUNC.CODCOLIGADA AND PFUNC.INTEGRCONTABIL = PCODINTCONTFUNC.CODCLIENTE )

LEFT JOIN PCONTAS (NOLOCK) ON ( PCONTAS.CODCOLIGADA = PCODINTCONTFUNC.CODCOLIGADA AND PCONTAS.INTEGRCFUNC = PCODINTCONTFUNC.CODCLIENTE )

WHERE PFFINANC.MESCOMP = '3'

AND PFFINANC.ANOCOMP = '2009'

AND PFFINANC.VALOR <> 0

AND PEVENTO.PROVDESCBASE <> 'B'

Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.