Jamensson Postado 7 de Outubro de 2008 Tópicos Que Criei: 23 Tópicos/Dia: 0.00 Meu Conteúdo: 140 Conteúdo/Dia: 0.02 Reputação: 3 Pontos/Conquistas: 983 Conteúdo Resolvido: 0 Dias Ganho: 3 Status: Offline Idade: 41 Denunciar Compartilhar Postado 7 de Outubro de 2008 Pessoal, Estive quebrando a cabeça para encontrar uma solução para rastrear os lançamentos pagos parcialmente e gostaria de compartilhar a solução que encontrei. Acredito que possa ser usado não só para o Fluxus mas também para outros sistemas como o Nucleus. SELECT L.IDLAN AS REF , L.DATAVENCIMENTO AS VENCIMENTO , L.DATABAIXA AS DATA_BAIXA FROM FLAN L LEFT OUTER JOIN FTDO D ON (D.CODCOLIGADA = L.CODCOLIGADA AND D.CODTDO = L.CODTDO) WHERE L.IDLAN IN (SELECT TO_NUMBER(SUBSTR(SCBP,1,INSTR(SCBP,'.')-1)) B FROM (SELECT R1.IDLAN,LTRIM(SYS_CONNECT_BY_PATH(R1.IDLANREL,'.'),'.') ||'.' SCBP FROM FRELLAN R1 WHERE R1.CODCOLIGADA = :ESPELHO#3 AND R1.TIPOREL = 11 CONNECT BY PRIOR R1.IDLAN = R1.IDLANREL ) WHERE IDLAN = :ESPELHO#2) AND L.CODCOLIGADA = :ESPELHO#3 AND L.STATUSLAN <> 2 AND D.EDEVOLUCAO NOT IN (1,2,3,4) --Adiantamentos ORDER BY L.IDLAN, L.NUMERODOCUMENTO --Melhorei um pouco a query A principal mudança está no campo R1.TIPOREL da tabela FRELLAN, cada código é um tipo de relacionamento. Segue tabela com os códigos. =================================== 1 - IRRF 2 - Adiantamento (1 Lançamento a N Adiantamentos) 22 - Adiantamento (N Lançamentos a 1 Adiantamento) 4 - Devolução 5 - INSS 6 - INSS Empregador 9 - Tributo 10 - Geração Tributo 11 - Baixa Parcial 26 - SEST/SENAT =================================== Essa tabela também pode ser encontrada no link: Variáveis Internas do Corpore Essa solução é para quem usa Oracle. Qualquer dúvida é só postar! Abraço. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Alexandre Gondim Postado 7 de Outubro de 2008 Tópicos Que Criei: 65 Tópicos/Dia: 0.01 Meu Conteúdo: 654 Conteúdo/Dia: 0.11 Reputação: 1 Pontos/Conquistas: 3.926 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 44 Dispositivo: Windows Denunciar Compartilhar Postado 7 de Outubro de 2008 Jamensson, boa tarde! Esse rastreamento é uma boa, infelizmente não trabalho com Oracle. Poderia descrecer a lógica usada para eu tentar repassar para SQL? Obrigado Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jamensson Postado 7 de Outubro de 2008 Tópicos Que Criei: 23 Tópicos/Dia: 0.00 Meu Conteúdo: 140 Conteúdo/Dia: 0.02 Reputação: 3 Pontos/Conquistas: 983 Conteúdo Resolvido: 0 Dias Ganho: 3 Status: Offline Idade: 41 Autor Denunciar Compartilhar Postado 7 de Outubro de 2008 Já faz algum tempo que não utilizo Sql Server. Encontrei um artigo que pode te ajudar nesse problema e em outros. http://worldofbit.com/wob/index.php?option...5:sql&Itemid=58 Espero que te ajude. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Maffra Postado 7 de Outubro de 2008 Tópicos Que Criei: 15 Tópicos/Dia: 0.00 Meu Conteúdo: 548 Conteúdo/Dia: 0.09 Reputação: 1 Pontos/Conquistas: 2.891 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 44 Denunciar Compartilhar Postado 7 de Outubro de 2008 caramba..... muito legal esse negócio... Obrigado Jamensson... Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Alexandre Gondim Postado 7 de Outubro de 2008 Tópicos Que Criei: 65 Tópicos/Dia: 0.01 Meu Conteúdo: 654 Conteúdo/Dia: 0.11 Reputação: 1 Pontos/Conquistas: 3.926 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 44 Dispositivo: Windows Denunciar Compartilhar Postado 7 de Outubro de 2008 Realmente, muito bom! Obrigado Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jair - Fórmula Postado 10 de Outubro de 2008 Tópicos Que Criei: 900 Tópicos/Dia: 0.14 Meu Conteúdo: 8.845 Conteúdo/Dia: 1.34 Reputação: 310 Pontos/Conquistas: 106.599 Conteúdo Resolvido: 0 Dias Ganho: 195 Status: Offline Idade: 52 Dispositivo: Windows Denunciar Compartilhar Postado 10 de Outubro de 2008 Já faz algum tempo que não utilizo Sql Server. Encontrei um artigo que pode te ajudar nesse problema e em outros. http://worldofbit.com/wob/index.php?option...5:sql&Itemid=58 Espero que te ajude. Muito bom isso heim !!! Jamersson, bem interessante. Pena que apenas no SQL 2005 (pra os que ainda não o tem), mas já é algo. Estou postando aqui o texto como está no link que vc mandou, assim, fica mais fácil, pra quem não quer acessar lá pra consultar o esquema como funciona. Claro que vou testar depois, pois, será muito útil isso. Abraco. --------------------- Recursividade no SQL Server 2005 Sáb, 27 de Setembro de 2008 01:09 Renato Tarantelli Aqueles que tem problemas em relacionar dados em um banco de dados onde há uma amarração por meio de árvore, segue uma boa dica de como utilizar querys recursivas no SQL Server. Antes de mais nada vamos preparar a tabela que utilizaremos em nosso exemplo: CREATE TABLE Hierarquia ( IdHierarquia INT PRIMARY KEY, IdHierarquiaPai INT ) INSERT INTO Hierarquia VALUES (1,NULL); INSERT INTO Hierarquia VALUES (2,4); INSERT INTO Hierarquia VALUES (3,1); INSERT INTO Hierarquia VALUES (4,1); INSERT INTO Hierarquia VALUES (5,2); INSERT INTO Hierarquia VALUES (6,4); INSERT INTO Hierarquia VALUES (7,3); INSERT INTO Hierarquia VALUES (8,1); INSERT INTO Hierarquia VALUES (9,2); INSERT INTO Hierarquia VALUES (10,1); INSERT INTO Hierarquia VALUES (11,4); INSERT INTO Hierarquia VALUES (12,2); INSERT INTO Hierarquia VALUES (13,3); INSERT INTO Hierarquia VALUES (14,1); INSERT INTO Hierarquia VALUES (15,4); INSERT INTO Hierarquia VALUES (16,3); INSERT INTO Hierarquia VALUES (17,2); INSERT INTO Hierarquia VALUES (18,2); INSERT INTO Hierarquia VALUES (19,1); INSERT INTO Hierarquia VALUES (20,1); Criada a tabela e inserida seu elementos vamos a nossa query de recursividade: WITH Filhos(IdHierarquia, IdHierarquiaPai, nivel, coluna) AS ( -- Membro Ancora SELECT IdHierarquia, IdHierarquiaPai, 0, CAST(IdHierarquia AS BINARY(900)) FROM Hierarquia UNION ALL -- Membros Recursivos SELECT H.IdHierarquia, H.IdHierarquiaPai, F.nivel + 1, CAST(coluna + CAST(H.IdHierarquia AS BINARY(10)) AS BINARY(900)) FROM Hierarquia H INNER JOIN Filhos F ON H.IdHierarquiaPai = F.IdHierarquia ) -- Query com Resultado SELECT IdHierarquiaPai, IdHierarquia, REPLICATE('| ' , nivel) + (CAST(IdHierarquia AS VARCHAR(20))) AS [Arvore de Hierarquia] FROM Filhos ORDER BY coluna Vamos entender oque foi feito. 1º A utlização do WITH vem de um dos novos recursos atribuídos ao SQL Server 2005, onde é utilizado para criação de views temporárias, válida somente dentro do seu batch atual. Esse recurso é denomindado de Common Table Expressions(CTE). Sintaxe: WITH [name] AS ( [instrução SELECT] ) 2º A utilização de UNION ALL separando as querys a serem utilizadas, sendo que a primeira é a própria view criada a partir do primeiro elemento de comparação, no nosso caso: -- Membro Ancora SELECT IdHierarquia, IdHierarquiaPai, 0, CAST(IdHierarquia AS BINARY(900)) FROM Hierarquia O primeiro SELECT é denominado de membro âncora, definindo o ponto de entrada da hirarquia. O segundo SELECT é denominado de membros recursivos onde é incluído o CTE criado em JOIN com a tabela a ser buscado os elementos: -- Membros Recursivos SELECT H.IdHierarquia, H.IdHierarquiaPai, F.nivel + 1, CAST(coluna + CAST(H.IdHierarquia AS BINARY(10)) AS BINARY(900)) FROM Hierarquia H INNER JOIN Filhos F ON H.IdHierarquiaPai = F.IdHierarquia Acho que valeu a dica. Bom Divertimento! referências: Linha de Código MSDN 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.