Ketsia Postado 15 de Setembro de 2017 Tópicos Que Criei: 5 Tópicos/Dia: 0.00 Meu Conteúdo: 11 Conteúdo/Dia: 0.00 Reputação: 1 Pontos/Conquistas: 120 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 34 Dispositivo: Windows Denunciar Compartilhar Postado 15 de Setembro de 2017 Pessoal, boa tarde! Criei uma consulta sql para me trazer todos os funcionários e dependentes que tem plano de saúde, porém, ela só me traz os funcionários que tem dependentes no plano, ou outros que não tem ele não traz. Alguém pode me ajudar? abaixo a conulta: SELECT GFILIAL.CODCOLIGADA, GFILIAL.CODFILIAL, GFILIAL.NOMEFANTASIA, PFUNC.CHAPA, PFUNC.NOME, PFUNC.CODSITUACAO, PPESSOA.DTNASCIMENTO, PPESSOA.SEXO, TRUNC(TO_CHAR(SYSDATE - PPESSOA.DTNASCIMENTO) / 365.25), PFDEPEND.NOME, PFDEPEND.GRAUPARENTESCO, DECODE(PFDEPEND.GRAUPARENTESCO, '1', 'FILHO', '5', 'CONJUGE', 'C', 'COMPANHEIRO', '9', 'OUTROS', '6', 'PAI', '7', 'MAE'), PFDEPEND.DTNASCIMENTO, PFDEPEND.SEXO, TRUNC(TO_CHAR(SYSDATE - PFDEPEND.DTNASCIMENTO) / 365.25), PFCOMPL.ASSMEDICA, GCONSIST.DESCRICAO FROM GFILIAL, PFUNC, PPESSOA, PFDEPENDCOMPL, PFCOMPL, PFDEPEND, GCONSIST WHERE GFILIAL.CODCOLIGADA = PFUNC.CODCOLIGADA AND GFILIAL.CODFILIAL = PFUNC.CODFILIAL AND PFUNC.CODPESSOA = PPESSOA.CODIGO AND PFUNC.CODCOLIGADA = PFDEPENDCOMPL.CODCOLIGADA AND PFUNC.CHAPA = PFDEPENDCOMPL.CHAPA AND PFDEPEND.NRODEPEND = PFDEPENDCOMPL.NRODEPEND AND PFUNC.CODCOLIGADA = PFCOMPL.CODCOLIGADA AND PFUNC.CHAPA = PFCOMPL.CHAPA AND PFUNC.CODCOLIGADA = PFDEPEND.CODCOLIGADA AND PFUNC.CHAPA = PFDEPEND.CHAPA AND PFDEPENDCOMPL.ASSMEDICA IS NOT NULL AND GCONSIST.CODCLIENTE = PFCOMPL.ASSMEDICA AND GCONSIST.CODTABELA = 'ASSMED' ORDER BY GFILIAL.CODCOLIGADA, GFILIAL.CODFILIAL, PFUNC.CHAPA Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
jeanqueres Postado 18 de Setembro de 2017 Tópicos Que Criei: 8 Tópicos/Dia: 0.00 Meu Conteúdo: 22 Conteúdo/Dia: 0.01 Reputação: 0 Pontos/Conquistas: 194 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 18 de Setembro de 2017 (editado) Bom dia Ketsia! Da forma que está fazendo (usando produto cartesiano) e inserindo a linha "AND PFUNC.CHAPA = PFDEPENDCOMPL.CHAPA" você obriga sua consulta a sempre buscar funcionários com dependentes, excluindo os que não possuem. Não sei se entendi 100% como seu SQL está funcionando, mas talvez algo do tipo funcione: SELECT GFILIAL.CODCOLIGADA, GFILIAL.CODFILIAL, GFILIAL.NOMEFANTASIA, PFUNC.CHAPA, PFUNC.NOME, PFUNC.CODSITUACAO, PPESSOA.DTNASCIMENTO, PPESSOA.SEXO, TRUNC(TO_CHAR(SYSDATE - PPESSOA.DTNASCIMENTO) / 365.25), PFDEPEND.NOME, PFDEPEND.GRAUPARENTESCO, DECODE(PFDEPEND.GRAUPARENTESCO, '1', 'FILHO', '5', 'CONJUGE', 'C', 'COMPANHEIRO', '9', 'OUTROS', '6', 'PAI', '7', 'MAE'), PFDEPEND.DTNASCIMENTO, PFDEPEND.SEXO, TRUNC(TO_CHAR(SYSDATE - PFDEPEND.DTNASCIMENTO) / 365.25), PFCOMPL.ASSMEDICA, GCONSIST.DESCRICAO FROM GFILIAL JOIN PFUNC ON PFUNC.CODCOLIGADA = GFILIAL.CODCOLIGADA AND PFUNC.CODFILIAL = GFILIAL.CODFILIAL JOIN PPESSOA ON PPESSOA.CODIGO = PFUNC.CODPESSOA LEFT JOIN PFDEPEND JOIN PFDEPENDCOMPL ON PFDEPENDCOMPL.CODCOLIGADA = PFDEPEND.CODCOLIGADA AND PFDEPENDCOMPL.CHAPA = PFDEPEND.CHAPA AND PFDEPENDCOMPL.NRODEPEND = PFDEPEND.NRODEPEND AND PFDEPENDCOMPL.ASSMEDICA IS NOT NULL ON PFDEPEND.CODCOLIGADA = PFUNC.CODCOLIGADA AND PFDEPEND.CHAPA = PFUNC.CHAPA JOIN PFCOMPL ON PFCOMPL.CODCOLIGADA = PFUNC.CODCOLIGADA AND PFCOMPL.CHAPA = PFUNC.CHAPA JOIN GCONSIST ON GCONSIST.CODCLIENTE = PFCOMPL.ASSMEDICA WHERE GCONSIST.CODTABELA = 'ASSMED' ORDER BY GFILIAL.CODCOLIGADA, GFILIAL.CODFILIAL, PFUNC.CHAPA O que imaginei que poderia ajudar é colocar um Left Join dos funcionários com os dependentes, a condição no join eliminaria os dependentes que não possuem plano de saúde, ao mesmo tempo que o left te ajudaria a manter a tabela de funcionários. Para filtrar os funcionários sem plano, você acrescentaria a condição no seu WHERE (eu assumi que a condição que está usando para isso é a GCONSIST.CODTABELA = 'ASSMED'). Bom, acredito que esse é o caminho que eu tentaria. Abraço. Editado 18 de Setembro de 2017 por jeanqueres Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jair - Fórmula Postado 18 de Setembro de 2017 Tópicos Que Criei: 899 Tópicos/Dia: 0.14 Meu Conteúdo: 8.841 Conteúdo/Dia: 1.34 Reputação: 310 Pontos/Conquistas: 106.574 Conteúdo Resolvido: 0 Dias Ganho: 195 Status: Offline Idade: 52 Dispositivo: Windows Denunciar Compartilhar Postado 18 de Setembro de 2017 Ketsia, bom dia. Use os joins para fazer a relação entre suas tabelas, e com o LEFT JOIN você consegue que venham os registros da sua tabela de Funcionário mesmo que não tenham dependentes por exemplo como deseja. Veja como ficaria: SELECT GFILIAL.CODCOLIGADA, GFILIAL.CODFILIAL, GFILIAL.NOMEFANTASIA, PFUNC.CHAPA, PFUNC.NOME, PFUNC.CODSITUACAO, PPESSOA.DTNASCIMENTO, PPESSOA.SEXO, TRUNC(TO_CHAR(SYSDATE - PPESSOA.DTNASCIMENTO) / 365.25), PFDEPEND.NOME, PFDEPEND.GRAUPARENTESCO, DECODE(PFDEPEND.GRAUPARENTESCO, '1', 'FILHO', '5', 'CONJUGE', 'C', 'COMPANHEIRO', '9', 'OUTROS', '6', 'PAI', '7', 'MAE'), PFDEPEND.DTNASCIMENTO, PFDEPEND.SEXO, TRUNC(TO_CHAR(SYSDATE - PFDEPEND.DTNASCIMENTO) / 365.25), PFCOMPL.ASSMEDICA, GCONSIST.DESCRICAO FROM GFILIAL, join PFUNC on GFILIAL.CODCOLIGADA = PFUNC.CODCOLIGADA AND GFILIAL.CODFILIAL = PFUNC.CODFILIAL join PPESSOA on PFUNC.CODPESSOA = PPESSOA.CODIGO left join PFDEPEND on PFUNC.CODCOLIGADA = PFDEPEND.CODCOLIGADA AND PFUNC.CHAPA = PFDEPEND.CHAPA left join PFDEPENDCOMPL on PFUNC.CODCOLIGADA = PFDEPENDCOMPL.CODCOLIGADA AND PFUNC.CHAPA = PFDEPENDCOMPL.CHAPA AND PFDEPEND.NRODEPEND = PFDEPENDCOMPL.NRODEPEND left join PFCOMPL on PFUNC.CODCOLIGADA = PFCOMPL.CODCOLIGADA AND PFUNC.CHAPA = PFCOMPL.CHAPA left join GCONSIST on GCONSIST.CODCLIENTE = PFCOMPL.ASSMEDICA WHERE PFDEPENDCOMPL.ASSMEDICA IS NOT NULL AND GCONSIST.CODTABELA = 'ASSMED' ORDER BY GFILIAL.CODCOLIGADA, GFILIAL.CODFILIAL, PFUNC.CHAPA Neste caso, deixando no WHERE apenas as condições de filtros mesmo... todas as relações entre as tabelas, você passa para os JOINS. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Ketsia Postado 18 de Setembro de 2017 Tópicos Que Criei: 5 Tópicos/Dia: 0.00 Meu Conteúdo: 11 Conteúdo/Dia: 0.00 Reputação: 1 Pontos/Conquistas: 120 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 34 Dispositivo: Windows Autor Denunciar Compartilhar Postado 18 de Setembro de 2017 Obrigada Gente. Deu certo!!! Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
LUIZ ALBERTO FONSECA Postado 22 de Agosto de 2019 Tópicos Que Criei: 1 Tópicos/Dia: 0.00 Meu Conteúdo: 10 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 78 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 60 Dispositivo: Windows Denunciar Compartilhar Postado 22 de Agosto de 2019 Nao reconheceu a variável TRUNC(TO_CHAR(SYSDATE - PPESSOA.DTNASCIMENTO) / 365.25), Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jair - Fórmula Postado 24 de Setembro de 2019 Tópicos Que Criei: 899 Tópicos/Dia: 0.14 Meu Conteúdo: 8.841 Conteúdo/Dia: 1.34 Reputação: 310 Pontos/Conquistas: 106.574 Conteúdo Resolvido: 0 Dias Ganho: 195 Status: Offline Idade: 52 Dispositivo: Windows Denunciar Compartilhar Postado 24 de Setembro de 2019 TO_CHAR é uma função interna do Oracle... se sua base é SQL Server terá que ajustar essa e outras partes. O sysdate também, por exemplo, no SQLServer é o Getdate() Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
emorais Postado 4 de Abril de 2023 Tópicos Que Criei: 1 Tópicos/Dia: 0.00 Meu Conteúdo: 4 Conteúdo/Dia: 0.01 Reputação: 0 Pontos/Conquistas: 31 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 4 de Abril de 2023 Copiei para fazer teste e apresenta erro de SQL não encerrado adequadamente, o que pode ter de errado? SELECT GFILIAL.CODCOLIGADA, GFILIAL.CODFILIAL, GFILIAL.NOMEFANTASIA, PFUNC.CHAPA, PFUNC.NOME, PFUNC.CODSITUACAO, PPESSOA.DTNASCIMENTO, PPESSOA.SEXO, TRUNC(TO_CHAR(SYSDATE - PPESSOA.DTNASCIMENTO) / 365.25), PFDEPEND.NOME, PFDEPEND.GRAUPARENTESCO, DECODE(PFDEPEND.GRAUPARENTESCO, '1', 'FILHO', '5', 'CONJUGE', 'C', 'COMPANHEIRO', '9', 'OUTROS', '6', 'PAI', '7', 'MAE'), PFDEPEND.DTNASCIMENTO, PFDEPEND.SEXO, TRUNC(TO_CHAR(SYSDATE - PFDEPEND.DTNASCIMENTO) / 365.25), PFCOMPL.ASSMEDICA, GCONSIST.DESCRICAO FROM GFILIAL, join PFUNC on GFILIAL.CODCOLIGADA = PFUNC.CODCOLIGADA AND GFILIAL.CODFILIAL = PFUNC.CODFILIAL join PPESSOA on PFUNC.CODPESSOA = PPESSOA.CODIGO left join PFDEPEND on PFUNC.CODCOLIGADA = PFDEPEND.CODCOLIGADA AND PFUNC.CHAPA = PFDEPEND.CHAPA left join PFDEPENDCOMPL on PFUNC.CODCOLIGADA = PFDEPENDCOMPL.CODCOLIGADA AND PFUNC.CHAPA = PFDEPENDCOMPL.CHAPA AND PFDEPEND.NRODEPEND = PFDEPENDCOMPL.NRODEPEND left join PFCOMPL on PFUNC.CODCOLIGADA = PFCOMPL.CODCOLIGADA AND PFUNC.CHAPA = PFCOMPL.CHAPA left join GCONSIST on GCONSIST.CODCLIENTE = PFCOMPL.ASSMEDICA WHERE PFDEPENDCOMPL.ASSMEDICA IS NOT NULL AND GCONSIST.CODTABELA = 'ASSMED' ORDER BY GFILIAL.CODCOLIGADA, GFILIAL.CODFILIAL, PFUNC.CHAPA Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jair - Fórmula Postado 13 de Maio de 2023 Tópicos Que Criei: 899 Tópicos/Dia: 0.14 Meu Conteúdo: 8.841 Conteúdo/Dia: 1.34 Reputação: 310 Pontos/Conquistas: 106.574 Conteúdo Resolvido: 0 Dias Ganho: 195 Status: Offline Idade: 52 Dispositivo: Windows Denunciar Compartilhar Postado 13 de Maio de 2023 Não tenho Oracle aqui instalado, mas no seu caso, o ideal é rodar no Gerenciador do Oracle primeiro, para validar sua sentença, e então, tentar gravar ela no RM. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
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.