Marcelo Conceição Postado 9 de Dezembro de 2010 Tópicos Que Criei: 125 Tópicos/Dia: 0.02 Meu Conteúdo: 458 Conteúdo/Dia: 0.07 Reputação: 1 Pontos/Conquistas: 3.531 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 44 Denunciar Compartilhar Postado 9 de Dezembro de 2010 Oi pessoal. Tenho uma sentença SQL com a seguinte estrutura: SELECT SUBSTRING(FLAN.NUMERODOCUMENTO,1,6) FROM FLAN(NOLOCK) WHERE FLAN.CODCOLIGADA=1 AND FLAN.IDFAT=20 AND FLAN.NFOUDUP=1 Esta sentença retorna 10 registros (linhas). Como posso transformar cada linha em uma coluna? Desde já sou grato pela colaboração. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Frederico Postado 10 de Dezembro de 2010 Tópicos Que Criei: 11 Tópicos/Dia: 0.00 Meu Conteúdo: 1.140 Conteúdo/Dia: 0.21 Reputação: 60 Pontos/Conquistas: 6.161 Conteúdo Resolvido: 0 Dias Ganho: 33 Status: Offline Idade: 42 Dispositivo: Windows Denunciar Compartilhar Postado 10 de Dezembro de 2010 Marcelo, O CoporeRM usa compatibilidade 80 do SQL Server, o Pivot só funciona com compatibilidade 90 e o suporte da Totvs me disse que a compatibilidade 90 do SQL só poderá ser usado quando tudo estiver convertido para .NET. []'s Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Marcelo Conceição Postado 10 de Dezembro de 2010 Tópicos Que Criei: 125 Tópicos/Dia: 0.02 Meu Conteúdo: 458 Conteúdo/Dia: 0.07 Reputação: 1 Pontos/Conquistas: 3.531 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 44 Autor Denunciar Compartilhar Postado 10 de Dezembro de 2010 Blz companheiro. Valeu pela informação! Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Andrea Reis Postado 11 de Dezembro de 2010 Tópicos Que Criei: 11 Tópicos/Dia: 0.00 Meu Conteúdo: 186 Conteúdo/Dia: 0.03 Reputação: 0 Pontos/Conquistas: 1.035 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 37 Denunciar Compartilhar Postado 11 de Dezembro de 2010 Oi pessoal.Tenho uma sentença SQL com a seguinte estrutura: SELECT SUBSTRING(FLAN.NUMERODOCUMENTO,1,6) FROM FLAN(NOLOCK) WHERE FLAN.CODCOLIGADA=1 AND FLAN.IDFAT=20 AND FLAN.NFOUDUP=1 Esta sentença retorna 10 registros (linhas). Como posso transformar cada linha em uma coluna? Desde já sou grato pela colaboração. Oi Marcelo, quando tenho essa necessidade normalmente declaro algumas variaveis e faço um subselect como vc pode ver abaixo um exemplo rapido SELECT ANO, CLIENTE, VR1SEMESTRE = SUM(case when mes >=1 and mes < 7 then VALOR else 0 end), VR2SEMESTRE = SUM(case when mes >=7 and mes <=12 then VALOR else 0 end) FROM (SELECT cliente =c.nome , VALOR=f.valorbaixado , ANO=DATEPART(YEAR, F.DATABAIXA), MES=DATEPART(MONTH, F.DATABAIXA) FROM FLAN F, FCFO C WHERE C.CODCFO = F.CODCFO AND F.CODCOLIGADA = C.CODCOLIGADA AND F.STATUSLAN=1 )Z WHERE VALOR >0 GROUP BY cliente, ANO Perceba que faço um case when e delimito o que vai aparecer nas colunas..... Mas, pelo que você falou vc quer trazer em colunas, mas vc não sabe na verdade quais são os resultados da consulta para filtrar correto? Sua necessidade pelo que pude assumir é que você precisa trazer em colunas para concatenar os resultados, correto? você quer trazer todos os documentos de uma fatura específica não é? Para isso você pode utilizar uma view com uma função que vai acumular os numeros dos documentos para você. É isso mesmo? Se precisar de ajuda para montar me avise que dou um help....se eu entendi errado, explique para que nos possamos avaliar se existe outra saida. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Marcelo Conceição Postado 12 de Dezembro de 2010 Tópicos Que Criei: 125 Tópicos/Dia: 0.02 Meu Conteúdo: 458 Conteúdo/Dia: 0.07 Reputação: 1 Pontos/Conquistas: 3.531 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 44 Autor Denunciar Compartilhar Postado 12 de Dezembro de 2010 É isso mesmo companheiro. Preciso de todos os documentos de uma fatura específica. Mas, não sei trabalhar com view. Caso posso mi ajuda desde já sou grato. No aguardo.. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Andrea Reis Postado 13 de Dezembro de 2010 Tópicos Que Criei: 11 Tópicos/Dia: 0.00 Meu Conteúdo: 186 Conteúdo/Dia: 0.03 Reputação: 0 Pontos/Conquistas: 1.035 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 37 Denunciar Compartilhar Postado 13 de Dezembro de 2010 É isso mesmo companheiro. Preciso de todos os documentos de uma fatura específica. Mas, não sei trabalhar com view. Caso posso mi ajuda desde já sou grato.No aguardo.. CompanheirA rs sem problemas isso é comum aqui no fórum rs Então Marcelo, primeira coisa que precisamos é criar uma função....melhor fazer tudo em base teste, bla, bla, bla rs Abra seu SQL e rode o seguinte: /* Essa função servirá para trazer todos os números de documento dos lançamentos em uma única coluna. Perceba que logo após instruir o sql a criar a função eu nomeei, poderia ser qualquer outro nome mas, convem iniciar com fn, para lembrar que se trata de uma FuNção.*/ CREATE FUNCTION fn_titulos( --Depois declarei as variáveis que vão ajudar a determinar quais serão os números de doc a serem retornados. @CLIFOR as varchar(10), @ANO as varchar(04), @MES as varchar(02), @COLIG AS VARCHAR(1) ) returns varchar(1500)--se precisar de um retorno maior basta aumentar o tamanho do varchar as BEGIN DECLARE @TEXTO AS varchar(200)--@TEXTO é cada numero de documento encontrado DECLARE @TEXTO1 AS varchar(1500)--@TEXTO1 é o texto completo que será exibido no final DECLARE CLIFOR_cursor CURSOR FOR -- Declarando Cursor para capturar todos os n de doc e trazer para @TEXTO1 SELECT -- Já está trazendo o n do doc, se quiser de outro campo é só alterar abaixo CAST(SUBSTRING(F.NUMERODOCUMENTO,1,6) AS VARCHAR) FROM FLAN F WHERE F.CODCFO = @CLIFOR AND YEAR(F.DATAVENCIMENTO) = @ANO AND MONTH(F.DATAVENCIMENTO) = @MES AND F.CODCOLIGADA = @COLIG /*Perceba que só atribui as @ ao correto campo, caso precise fazer outros filtros e condições aqui é o lugar correto */ OPEN CLIFOR_cursor FETCH NEXT FROM CLIFOR_cursor INTO @TEXTO SET @TEXTO1 = 'TÍTULO(S):' -- Atribui o texto TÍTULO(S): para aparecer no início do meu texto, pode alterar ou deixar ''(vazio) WHILE @@FETCH_STATUS = 0 BEGIN SET @TEXTO1 = @TEXTO1 + RTRIM(@TEXTO) + ' ' FETCH NEXT FROM CLIFOR_cursor INTO @TEXTO END CLOSE CLIFOR_cursor DEALLOCATE CLIFOR_cursor RETURN ISNULL(@TEXTO1, 'NENHUM DOCUMENTO ENCONTRADO') END De uma olhada nos comentários para você incluir a sentença e variaveis adequadas etc feito isso vc pode fazer um teste dando um select na function SELECT [corpore123].[dbo].[fn_titulos] ( <@CLIFOR, varchar(10),> --Lembre que o clifor deve estar entre ' ' para funcionar ,<@ANO, varchar(4),> ,<@MES, varchar(2),> ,<@COLIG, varchar(1),>) GO você perceberá que ele criou uma única coluna com todos os seus numeros de documento... agora como eu to sem o sistema na minha máquina (reinstalando máquinas virtuais eheheh) não posso testar se vc pode usar a funçao diretamente no gerador....ou no utilitário de sql do rm... no gerador acho que só tem Stored Procedures... então crie uma consulta no RM parecida com essa SELECT c.codcoligada as codcol ,c.CODCFO AS CODIGO, c.CGCCFO AS CPF_CNPJ, NOME , c.CIDADE, c.CODETD AS ESTADO, dbo.fn_titulos(f.CODCFO, YEAR(f.DATAVENCIMENTO) , month(f.DATAVENCIMENTO) , f.CODCOLIGADA) as titulo --perceba que usei um dbo na frente p chamar a função com o privilégio de exec FROM FCFO c left join FLAN f on (c.CODCFO = f.CODCFO and f.CODCOLCFO = c.CODCOLIGADA) Se não funcionar......crie uma View, relaxe suuuuper fácil rs CREATE VIEW VW_CLIFOR AS --Pronto 2 linhas que vc n'ao sabia....daí p baixo eh o bom e velho Select rsrs SELECT c.codcoligada as codcol ,c.CODCFO AS CODIGO, c.CGCCFO AS CPF_CNPJ, NOME , c.CIDADE, c.CODETD AS ESTADO, dbo.fn_titulos(f.CODCFO, YEAR(f.DATAVENCIMENTO) , month(f.DATAVENCIMENTO) , f.CODCOLIGADA) as titulo FROM FCFO c left join FLAN f on (c.CODCFO = f.CODCFO and f.CODCOLCFO = c.CODCOLIGADA) WHERE c.PAGREC <>1 Bem se com a View vc tb não conseguir trazer p Consulta SQL do Rm me avise....pq Stored Procedure ele aceita...ou então podemos discutir outras formas de fazer o seu relatório fora do RM Ah se depois tudo funcionar da prox q eu for em Aracaju vc vai me pagar uns bons caranguejos fechado? huauhahuahua Por sinal onde vc trabalha aí? 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.