- Este tópico contém 8 respostas, 3 vozes e foi atualizado pela última vez 11 anos, 11 meses atrás por Doug.
-
AutorPosts
-
30 de novembro de 2012 às 8:19 pm #104820DougParticipante
Boa tarde pessoal
Preciso fazer um programinha mas a lógica nao esta saindo….
Pra resumir vou dizer que tenho uma tabela com 3 campos
NOME MES PAGTO
Fulano 1 900,00
Fulano 2 900,00
Fulano 3 900,00
Fulano 5 900,00Como descobrir que o mes 4 nao foi carregado na tabela ??? Me ajudem por favor….
30 de novembro de 2012 às 9:38 pm #104821Sergio WilliansMestre@Doug
Coloca aqui o código que você montou para termos uma base e te ajudar.
Existem várias abordagens que podem ser feitas, para sabermos qual a melhor no seu caso, é necessário o código que você está escrevendo.
30 de novembro de 2012 às 9:54 pm #104822DougParticipanteAi esta o cursor que estou criando….Ele esta trazendo todos os registros….mas tenho um funcionário que nao teve pagamento no mes 04, na tabela x21(onde ficam armazenados os pagtos).
Objetivo do customizado é identificar se não houve carga em algum mês na x21 de acordo com os funcionários trazidos da x15
Obrigado
cursor ficha is
select x21.cod_empresa,
x21.cod_estab,
x21.cod_func,
x15.nome,
x15.data_admissao,
decode(x15.data_demissao, '', 'N/A') data_demissao,
x21.mes_competencia MES
from x21_ficha_financ x21, x15_funcionario x15
where x21.cod_empresa = x15.cod_empresa
and x21.cod_estab = x15.cod_estab
and x21.cod_func = x15.cod_func
and x21.cod_empresa = p_empresa
and x21.cod_estab = p_estab
and x15.data_admissao between to_date(p_dataini, 'DD/MM/YYYY') and
to_date(p_datafim, 'DD/MM/YYYY')
order by x21.cod_empresa,
x21.cod_estab,
x21.cod_func,
x15.nome,
x21.ano_competencia,
x21.mes_competencia;3 de dezembro de 2012 às 3:28 pm #104825Sergio WilliansMestreBom dia Doug !
Desculpe a demora, estou sem máquina em casa e só agora consegui postar.
Sem especular muito tecnicamente, você tem que começar a abordagem pelo mês, ou seja, verificar mês a mês todas as ocorrências referentes a eles.Ex:
MES NOME PAGTO
1 Fulano 900,00
2 Fulano 900,00
3 Fulano 900,00
4
5 Fulano 900,00Se você tiver uma tabela no seu sistema com os meses do ano, pode resolver isso através de um outer join no próprio SQL que construiu, ou fazer isso em PL/SQL na unha, o que seria bem mais demorado.
Abraço
4 de dezembro de 2012 às 12:43 am #104827DougParticipanteBlz Will ??
Nao tenho essas tabelas ano e mes, mas poderia cria-las sem problemas algum..nao estive mexendo nesse codigo desde sexta…o mais dificil mesmo é entender como trazer uma informacao que nao existe…hehehehe….
4 de dezembro de 2012 às 3:20 pm #104834Sergio WilliansMestreCara, eu estou sem ambiente de teste para te montar um conceito.
Estuda sobre OUTER JOIN, vai resolver o seu problema, te garanto !4 de dezembro de 2012 às 3:40 pm #104835rmanParticipante@Doug
Seguindo a ideia de criar a tabela de mês, a sacada está em utilizar a clausula NOT EXISTS.
SELECT M.MES
FROM MESES M
WHERE NOT EXISTS(
SELECT 1
FROM PAGAMENTOS P
WHERE P.MES = M.MES
AND P.ANO = :ANO
AND P.FUNCIONARIO_ID = :FUNCIONARIO_ID
)
Desta forma você encontra informações que não existem 😆
4 de dezembro de 2012 às 4:37 pm #104838Sergio WilliansMestre@Doug
Se você precisar só apresentar aqueles que não possuem pagamentos, a solução do @rman é perfeita !
Verifique se isso atende suas necessidades e dê um feedback para nós !5 de dezembro de 2012 às 3:56 pm #104861DougParticipanteBoa rapaziada…estou em outro projeto e retomo esse na semana que vem hehehe…assim q tiver um feedback eu passo pra vc´s….valeu mesmo….
-
AutorPosts
- Você deve fazer login para responder a este tópico.