Antony Postado 1 de Outubro de 2012 Tópicos Que Criei: 138 Tópicos/Dia: 0.03 Meu Conteúdo: 567 Conteúdo/Dia: 0.12 Reputação: 6 Pontos/Conquistas: 4.176 Conteúdo Resolvido: 0 Dias Ganho: 4 Status: Offline Denunciar Compartilhar Postado 1 de Outubro de 2012 Bom dia a Todos Alguém teria algum relatório que trousesse a quantidade de itens comprados de um um periodo de um ano que as quebras dos itens fossem por mês exemplo descrição Janeiro quant. Fevereiro quant. Março quant. abril Qaunt rolamento 5 10 12 10 Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Antony Postado 1 de Outubro de 2012 Tópicos Que Criei: 138 Tópicos/Dia: 0.03 Meu Conteúdo: 567 Conteúdo/Dia: 0.12 Reputação: 6 Pontos/Conquistas: 4.176 Conteúdo Resolvido: 0 Dias Ganho: 4 Status: Offline Autor Denunciar Compartilhar Postado 1 de Outubro de 2012 Montei esta sentença que retorna o mês de Janeiro com valor 1 e Fevereiro com valor 2 . Tem como através de case transformar o valor 1 em 'Janeiro' e quando for 2 'Fevereiro' ? select c.codigoreduzido, c.nomefantasia, sum ( a.quantidade) as quant, a.codund, datepart(month,b.dataemissao) as mes, from titmmov a (nolock) left outer join tmov b on b.codcoligada = a.codcoligada and b.idmov = a.idmov left outer join tprd c on c.codcoligada = a.codcoligada and c.idprd = a.idprd left outer join ttb4 e on e.codcoligada = c.codcoligada and e.codtb4fat = c.codtb4fat where a.codcoligada ='1' and b.status = 'f' and b.dataemissao >=:data_inicial and b.dataemissao <=:data_final and b.codtmv =:codtmv_s group by c.codigoreduzido, c.nomefantasia, b.codtmv, a.codund, b.dataemissao order by c.nomefantasia Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Frederico Postado 1 de Outubro de 2012 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 1 de Outubro de 2012 Se pode usar o Case when pra fazer isso case when datepart(month,b.dataemissao) = 1 then 'Janeiro' when datepart(month,b.dataemissao) = 2 then 'Fevereiro' ......... end as mes ou case when month(b.dataemissao) = 1 then 'Janeiro' when month(b.dataemissao) = 2 then 'Fevereiro' ......... end as mes Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Antony Postado 1 de Outubro de 2012 Tópicos Que Criei: 138 Tópicos/Dia: 0.03 Meu Conteúdo: 567 Conteúdo/Dia: 0.12 Reputação: 6 Pontos/Conquistas: 4.176 Conteúdo Resolvido: 0 Dias Ganho: 4 Status: Offline Autor Denunciar Compartilhar Postado 1 de Outubro de 2012 (editado) Boa tarde Frederico neste caso ele retonar dessa forma 001 rolamento 1pç janeiro 002 mancal 1pç Feveriro tem como retorna assim os meses na horizontal? ................................Janeiro....................Fevereiro 001 rolamento................1 002 mancal.....................................................1 Editado 1 de Outubro de 2012 por Antony Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Antony Postado 1 de Outubro de 2012 Tópicos Que Criei: 138 Tópicos/Dia: 0.03 Meu Conteúdo: 567 Conteúdo/Dia: 0.12 Reputação: 6 Pontos/Conquistas: 4.176 Conteúdo Resolvido: 0 Dias Ganho: 4 Status: Offline Autor Denunciar Compartilhar Postado 1 de Outubro de 2012 Boa tarde Frederico neste caso ele retonar dessa forma 001 rolamento 1pç janeiro 002 mancal 1pç Feveriro tem como retorna assim os meses na horizontal? ................................Janeiro....................Fevereiro 001 rolamento................1 002 mancal.....................................................1 Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Antony Postado 1 de Outubro de 2012 Tópicos Que Criei: 138 Tópicos/Dia: 0.03 Meu Conteúdo: 567 Conteúdo/Dia: 0.12 Reputação: 6 Pontos/Conquistas: 4.176 Conteúdo Resolvido: 0 Dias Ganho: 4 Status: Offline Autor Denunciar Compartilhar Postado 1 de Outubro de 2012 Como posso agrupar esta sentença e ainda acrescentar o campo do mês da emissão select c.codigoreduzido, c.nomefantasia, sum ( a.quantidade) as quant, a.codund, from titmmov a (nolock) left outer join tmov b on b.codcoligada = a.codcoligada and b.idmov = a.idmov left outer join tprd c on c.codcoligada = a.codcoligada and c.idprd = a.idprd left outer join ttb4 e on e.codcoligada = c.codcoligada and e.codtb4fat = c.codtb4fat where a.codcoligada ='1' and b.dataemissão >=:pln_b2_d and b.dataemissão <=:pln_b3_d and b.codtmv in ('1.2.05','1.2.10','1.2.13') group by c.codigoreduzido, c.nomefantasia, a.codund order by c.nomefantasia Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Frederico Postado 2 de Outubro de 2012 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 2 de Outubro de 2012 Antony, Da forma que você colocou com a compatibilidade do banco de dados (80) que é SQL2000 não tem como girar a tabela, a partir da versão 2005 você a opção PIVOT que faz esse trabalho. Outra alternativa seria montar pra cada célula da sua planilha fazer uma consulta SQL para o mês ou montar uma consulta SQL trazendo o mês e dentro dela uma SubQuery com os totais também funciona. []'s Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Antony Postado 2 de Outubro de 2012 Tópicos Que Criei: 138 Tópicos/Dia: 0.03 Meu Conteúdo: 567 Conteúdo/Dia: 0.12 Reputação: 6 Pontos/Conquistas: 4.176 Conteúdo Resolvido: 0 Dias Ganho: 4 Status: Offline Autor Denunciar Compartilhar Postado 2 de Outubro de 2012 Antony, Da forma que você colocou com a compatibilidade do banco de dados (80) que é SQL2000 não tem como girar a tabela, a partir da versão 2005 você a opção PIVOT que faz esse trabalho. Outra alternativa seria montar pra cada célula da sua planilha fazer uma consulta SQL para o mês ou montar uma consulta SQL trazendo o mês e dentro dela uma SubQuery com os totais também funciona. []'s Bom dia Frederico o meu Banco de dados é SQL 2005 o PIVOT é uma função que deve ser criada no banco de dados? Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Robinson Postado 2 de Outubro de 2012 Tópicos Que Criei: 58 Tópicos/Dia: 0.01 Meu Conteúdo: 672 Conteúdo/Dia: 0.10 Reputação: 25 Pontos/Conquistas: 4.005 Conteúdo Resolvido: 0 Dias Ganho: 18 Status: Offline Idade: 48 Denunciar Compartilhar Postado 2 de Outubro de 2012 Esse é o PIVOT SELECT C.CODIGOREDUZIDO, C.NOMEFANTASIA, A.CODUND, COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 1 THEN SUM ( A.QUANTIDADE) END),0) AS 'JAN', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 2 THEN SUM ( A.QUANTIDADE) END),0) AS 'FEV', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 3 THEN SUM ( A.QUANTIDADE) END),0) AS 'MAR', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 4 THEN SUM ( A.QUANTIDADE) END),0) AS 'ABR', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 5 THEN SUM ( A.QUANTIDADE) END),0) AS 'MAI', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 6 THEN SUM ( A.QUANTIDADE) END),0) AS 'JUN', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 7 THEN SUM ( A.QUANTIDADE) END),0) AS 'JUL', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 8 THEN SUM ( A.QUANTIDADE) END),0) AS 'AGO', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 9 THEN SUM ( A.QUANTIDADE) END),0) AS 'SET', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 10 THEN SUM ( A.QUANTIDADE) END),0) AS 'OUT', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 11 THEN SUM ( A.QUANTIDADE) END),0) AS 'NOV', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 12 THEN SUM ( A.QUANTIDADE) END),0) AS 'DEZ' FROM TITMMOV A (NOLOCK) LEFT OUTER JOIN TMOV B ON B.CODCOLIGADA = A.CODCOLIGADA AND B.IDMOV = A.IDMOV LEFT OUTER JOIN TPRD C ON C.CODCOLIGADA = A.CODCOLIGADA AND C.IDPRD = A.IDPRD LEFT OUTER JOIN TTB4 E ON E.CODCOLIGADA = C.CODCOLIGADA AND E.CODTB4FAT = C.CODTB4FAT WHERE A.CODCOLIGADA ='1' AND B.STATUS = 'F' AND B.DATAEMISSAO >='2012-01-01' AND B.DATAEMISSAO <='2012-12-31' AND B.CODTMV ='1.2.01' -- coloque seu movimento aqui, se for mais de um use "in ('','','') GROUP BY C.CODIGOREDUZIDO, C.NOMEFANTASIA, B.CODTMV, A.CODUND, B.DATAEMISSAO ORDER BY C.NOMEFANTASIA Depois nos diga se deu certo Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Antony Postado 2 de Outubro de 2012 Tópicos Que Criei: 138 Tópicos/Dia: 0.03 Meu Conteúdo: 567 Conteúdo/Dia: 0.12 Reputação: 6 Pontos/Conquistas: 4.176 Conteúdo Resolvido: 0 Dias Ganho: 4 Status: Offline Autor Denunciar Compartilhar Postado 2 de Outubro de 2012 (editado) Esse é o PIVOT SELECT C.CODIGOREDUZIDO, C.NOMEFANTASIA, A.CODUND, COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 1 THEN SUM ( A.QUANTIDADE) END),0) AS 'JAN', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 2 THEN SUM ( A.QUANTIDADE) END),0) AS 'FEV', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 3 THEN SUM ( A.QUANTIDADE) END),0) AS 'MAR', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 4 THEN SUM ( A.QUANTIDADE) END),0) AS 'ABR', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 5 THEN SUM ( A.QUANTIDADE) END),0) AS 'MAI', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 6 THEN SUM ( A.QUANTIDADE) END),0) AS 'JUN', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 7 THEN SUM ( A.QUANTIDADE) END),0) AS 'JUL', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 8 THEN SUM ( A.QUANTIDADE) END),0) AS 'AGO', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 9 THEN SUM ( A.QUANTIDADE) END),0) AS 'SET', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 10 THEN SUM ( A.QUANTIDADE) END),0) AS 'OUT', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 11 THEN SUM ( A.QUANTIDADE) END),0) AS 'NOV', COALESCE((CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 12 THEN SUM ( A.QUANTIDADE) END),0) AS 'DEZ' FROM TITMMOV A (NOLOCK) LEFT OUTER JOIN TMOV B ON B.CODCOLIGADA = A.CODCOLIGADA AND B.IDMOV = A.IDMOV LEFT OUTER JOIN TPRD C ON C.CODCOLIGADA = A.CODCOLIGADA AND C.IDPRD = A.IDPRD LEFT OUTER JOIN TTB4 E ON E.CODCOLIGADA = C.CODCOLIGADA AND E.CODTB4FAT = C.CODTB4FAT WHERE A.CODCOLIGADA ='1' AND B.STATUS = 'F' AND B.DATAEMISSAO >='2012-01-01' AND B.DATAEMISSAO <='2012-12-31' AND B.CODTMV ='1.2.01' -- coloque seu movimento aqui, se for mais de um use "in ('','','') GROUP BY C.CODIGOREDUZIDO, C.NOMEFANTASIA, B.CODTMV, A.CODUND, B.DATAEMISSAO ORDER BY C.NOMEFANTASIA Depois nos diga se deu certo Boa tarde Robinson Na planilha retornou as informações porém não agrupou as quantidades e para cada mês que tem uma quantidade ele repete o registo como no exemplo abaixo. ..........................Janeiro......Fevereiro........Março 001 rolamento.......1 001 rolamento..........................1 001 rolamento..............................................2 não sei se é possivel mas eu queria que retornasse em uma unica linha e agrupasse a quantidade do mês. .........................Janeiro......Fevereiro........Março 001 rolamento......1..................1..................2 Agradeço pela atenção Editado 2 de Outubro de 2012 por Antony Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Robinson Postado 2 de Outubro de 2012 Tópicos Que Criei: 58 Tópicos/Dia: 0.01 Meu Conteúdo: 672 Conteúdo/Dia: 0.10 Reputação: 25 Pontos/Conquistas: 4.005 Conteúdo Resolvido: 0 Dias Ganho: 18 Status: Offline Idade: 48 Denunciar Compartilhar Postado 2 de Outubro de 2012 É verdade mas, já arrumei SELECT C.CODIGOREDUZIDO, C.NOMEFANTASIA, A.CODUND, SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 1 THEN A.QUANTIDADE END) AS 'JAN', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 2 THEN A.QUANTIDADE END) AS 'FEV', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 3 THEN A.QUANTIDADE END) AS 'MAR', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 4 THEN A.QUANTIDADE END) AS 'ABR', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 5 THEN A.QUANTIDADE END) AS 'MAI', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 6 THEN A.QUANTIDADE END) AS 'JUN', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 7 THEN A.QUANTIDADE END) AS 'JUL', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 8 THEN A.QUANTIDADE END) AS 'AGO', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 9 THEN A.QUANTIDADE END) AS 'SET', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 10 THEN A.QUANTIDADE END) AS 'OUT', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 11 THEN A.QUANTIDADE END) AS 'NOV', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 12 THEN A.QUANTIDADE END) AS 'DEZ' FROM TITMMOV A (NOLOCK) INNER JOIN TMOV B ON B.CODCOLIGADA = A.CODCOLIGADA AND B.IDMOV = A.IDMOV INNER JOIN TPRD C ON C.CODCOLIGADA = A.CODCOLIGADA AND C.IDPRD = A.IDPRD LEFT OUTER JOIN TTB4 E ON E.CODCOLIGADA = C.CODCOLIGADA AND E.CODTB4FAT = C.CODTB4FAT WHERE A.CODCOLIGADA ='1' AND B.STATUS <> 'C' AND B.DATAEMISSAO >='2012-01-01' AND B.DATAEMISSAO <='2012-12-31' AND B.CODTMV ='1.2.01' GROUP BY C.CODIGOREDUZIDO, C.NOMEFANTASIA, A.CODUND ORDER BY C.NOMEFANTASIA Diz aí se deu certo pra vc também Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Robinson Postado 2 de Outubro de 2012 Tópicos Que Criei: 58 Tópicos/Dia: 0.01 Meu Conteúdo: 672 Conteúdo/Dia: 0.10 Reputação: 25 Pontos/Conquistas: 4.005 Conteúdo Resolvido: 0 Dias Ganho: 18 Status: Offline Idade: 48 Denunciar Compartilhar Postado 2 de Outubro de 2012 E aí Antony, conseguiu? Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Antony Postado 2 de Outubro de 2012 Tópicos Que Criei: 138 Tópicos/Dia: 0.03 Meu Conteúdo: 567 Conteúdo/Dia: 0.12 Reputação: 6 Pontos/Conquistas: 4.176 Conteúdo Resolvido: 0 Dias Ganho: 4 Status: Offline Autor Denunciar Compartilhar Postado 2 de Outubro de 2012 É verdade mas, já arrumei SELECT C.CODIGOREDUZIDO, C.NOMEFANTASIA, A.CODUND, SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 1 THEN A.QUANTIDADE END) AS 'JAN', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 2 THEN A.QUANTIDADE END) AS 'FEV', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 3 THEN A.QUANTIDADE END) AS 'MAR', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 4 THEN A.QUANTIDADE END) AS 'ABR', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 5 THEN A.QUANTIDADE END) AS 'MAI', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 6 THEN A.QUANTIDADE END) AS 'JUN', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 7 THEN A.QUANTIDADE END) AS 'JUL', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 8 THEN A.QUANTIDADE END) AS 'AGO', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 9 THEN A.QUANTIDADE END) AS 'SET', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 10 THEN A.QUANTIDADE END) AS 'OUT', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 11 THEN A.QUANTIDADE END) AS 'NOV', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 12 THEN A.QUANTIDADE END) AS 'DEZ' FROM TITMMOV A (NOLOCK) INNER JOIN TMOV B ON B.CODCOLIGADA = A.CODCOLIGADA AND B.IDMOV = A.IDMOV INNER JOIN TPRD C ON C.CODCOLIGADA = A.CODCOLIGADA AND C.IDPRD = A.IDPRD LEFT OUTER JOIN TTB4 E ON E.CODCOLIGADA = C.CODCOLIGADA AND E.CODTB4FAT = C.CODTB4FAT WHERE A.CODCOLIGADA ='1' AND B.STATUS <> 'C' AND B.DATAEMISSAO >='2012-01-01' AND B.DATAEMISSAO <='2012-12-31' AND B.CODTMV ='1.2.01' GROUP BY C.CODIGOREDUZIDO, C.NOMEFANTASIA, A.CODUND ORDER BY C.NOMEFANTASIA Diz aí se deu certo pra vc também Deu certo para periodo de 01/01/2012 a 31/12/2012. Tentei consultar do periodo 01/09/2011 a 30/09/2012 e não deu certo tenho que mudar alguma coisa para retornar este periodo Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
araujoronaldo Postado 2 de Outubro de 2012 Tópicos Que Criei: 67 Tópicos/Dia: 0.01 Meu Conteúdo: 269 Conteúdo/Dia: 0.05 Reputação: 9 Pontos/Conquistas: 2.029 Conteúdo Resolvido: 0 Dias Ganho: 5 Status: Offline Dispositivo: Windows Denunciar Compartilhar Postado 2 de Outubro de 2012 Não deu certo porque este período está fixo na sentença SQL, veja abaixo em negrito: WHERE A.CODCOLIGADA ='1' AND B.STATUS <> 'C' AND B.DATAEMISSAO >='2012-01-01' AND B.DATAEMISSAO <='2012-12-31' AND B.CODTMV ='1.2.01' Para ter a possibilidade de gerar relatório para qualquer período, basta substituir o valor fixo por parâmetro, conforme abaixo: WHERE A.CODCOLIGADA ='1' AND B.STATUS <> 'C' AND B.DATAEMISSAO >= :Data_Emissao_Inicial AND B.DATAEMISSAO <= :Data_Emissao_Final AND B.CODTMV ='1.2.01' No relatório, inserir 2 parâmetros: Data_Emissao_Inicial, Data_Emissao_Final Desta forma, ao executar o relatório, será solicitado ao usuário digitar o intervalo de data de Emissão. (Digitar sempre no formato DD/MM/YYYY - dia, mês e ano separados por /). Veja se resolve. Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Antony Postado 2 de Outubro de 2012 Tópicos Que Criei: 138 Tópicos/Dia: 0.03 Meu Conteúdo: 567 Conteúdo/Dia: 0.12 Reputação: 6 Pontos/Conquistas: 4.176 Conteúdo Resolvido: 0 Dias Ganho: 4 Status: Offline Autor Denunciar Compartilhar Postado 2 de Outubro de 2012 Não deu certo porque este período está fixo na sentença SQL, veja abaixo em negrito: WHERE A.CODCOLIGADA ='1' AND B.STATUS <> 'C' AND B.DATAEMISSAO >='2012-01-01' AND B.DATAEMISSAO <='2012-12-31' AND B.CODTMV ='1.2.01' Para ter a possibilidade de gerar relatório para qualquer período, basta substituir o valor fixo por parâmetro, conforme abaixo: WHERE A.CODCOLIGADA ='1' AND B.STATUS <> 'C' AND B.DATAEMISSAO >= :Data_Emissao_Inicial AND B.DATAEMISSAO <= :Data_Emissao_Final AND B.CODTMV ='1.2.01' No relatório, inserir 2 parâmetros: Data_Emissao_Inicial, Data_Emissao_Final Desta forma, ao executar o relatório, será solicitado ao usuário digitar o intervalo de data de Emissão. (Digitar sempre no formato DD/MM/YYYY - dia, mês e ano separados por /). Veja se resolve. eu fiz conforme vc sugeriiu porém não retornou na seguência set.2011/ Out.2011/ Nov.2011 /Dez.2011 / Jan.2012 / Fev.2012 / Mar.2012 / Abril2012/ Maio2012 / Jun.2012 / Jul .2012 / Ago.2012/ Set.2012 Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
araujoronaldo Postado 2 de Outubro de 2012 Tópicos Que Criei: 67 Tópicos/Dia: 0.01 Meu Conteúdo: 269 Conteúdo/Dia: 0.05 Reputação: 9 Pontos/Conquistas: 2.029 Conteúdo Resolvido: 0 Dias Ganho: 5 Status: Offline Dispositivo: Windows Denunciar Compartilhar Postado 2 de Outubro de 2012 Penso que o problema está no fato de você estar gerando um perído que envolve dois anos: 2011 e 2012. Do jeito que a sentença está montada, ela soma as quantidades para cada mês de um determinado ano. Do jeito que você mencionou acima, o ano também é importante na composição do SQL (set.2011/ Out.2011/ Nov.2011 ...) Não estou com o SQL server agora aqui para testar. Não saberia de antemão como fazer para resolver isso. Caso você necessitar analisar qualquer período inclusive que envolva mais de um ano, teremos que pedir mais ajuda dos nossos amigos para reestruturar a SQL. Um detalhe que temos que analisar, se for um período muito grande, ficaria inviável de analisar. Exemplo 2 anos poderia gerar 24 colunas diferentes (24 meses). Espero ter ajudado. Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Antony Postado 2 de Outubro de 2012 Tópicos Que Criei: 138 Tópicos/Dia: 0.03 Meu Conteúdo: 567 Conteúdo/Dia: 0.12 Reputação: 6 Pontos/Conquistas: 4.176 Conteúdo Resolvido: 0 Dias Ganho: 4 Status: Offline Autor Denunciar Compartilhar Postado 2 de Outubro de 2012 O problema é exatamente este mencionado por você está envolvendo 2011/2012 porém eu preciso apenas o periodo de 1 ano que seria de 01/09/2011 a 30/09/2012. Mas agradeço pela sua atenção Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
araujoronaldo Postado 2 de Outubro de 2012 Tópicos Que Criei: 67 Tópicos/Dia: 0.01 Meu Conteúdo: 269 Conteúdo/Dia: 0.05 Reputação: 9 Pontos/Conquistas: 2.029 Conteúdo Resolvido: 0 Dias Ganho: 5 Status: Offline Dispositivo: Windows Denunciar Compartilhar Postado 2 de Outubro de 2012 O problema neste caso é que para o mês 09, o somatório das quantidades será acumulado (somará 09/2011 e 09/2012). Se fosse de 01/09/2011 a 31/08/2012, penso que dará certo. Aliás você mencionou 1 ano e o período de 01/09/2011 a 31/08/ 2012 representa 1 ano. O período que você passou representa 13 meses. Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Antony Postado 2 de Outubro de 2012 Tópicos Que Criei: 138 Tópicos/Dia: 0.03 Meu Conteúdo: 567 Conteúdo/Dia: 0.12 Reputação: 6 Pontos/Conquistas: 4.176 Conteúdo Resolvido: 0 Dias Ganho: 4 Status: Offline Autor Denunciar Compartilhar Postado 2 de Outubro de 2012 é verdade vc tem razão Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
araujoronaldo Postado 2 de Outubro de 2012 Tópicos Que Criei: 67 Tópicos/Dia: 0.01 Meu Conteúdo: 269 Conteúdo/Dia: 0.05 Reputação: 9 Pontos/Conquistas: 2.029 Conteúdo Resolvido: 0 Dias Ganho: 5 Status: Offline Dispositivo: Windows Denunciar Compartilhar Postado 2 de Outubro de 2012 Faça o teste aí e veja se dá certo. Como o relatório irá apresentar os meses de Setembro a Agosto, o que pode ser feito é deixar visivel no cabeçalho do relatório os parâmeros Data_Emissao_Inicial e Data_Emissao_Final, o que orientará o usuário quanto ao período que o sistema obedeceu para extração das informações (Data de Emissão do movimento). Abraços. Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Antony Postado 2 de Outubro de 2012 Tópicos Que Criei: 138 Tópicos/Dia: 0.03 Meu Conteúdo: 567 Conteúdo/Dia: 0.12 Reputação: 6 Pontos/Conquistas: 4.176 Conteúdo Resolvido: 0 Dias Ganho: 4 Status: Offline Autor Denunciar Compartilhar Postado 2 de Outubro de 2012 valeu obrigado Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Antony Postado 2 de Outubro de 2012 Tópicos Que Criei: 138 Tópicos/Dia: 0.03 Meu Conteúdo: 567 Conteúdo/Dia: 0.12 Reputação: 6 Pontos/Conquistas: 4.176 Conteúdo Resolvido: 0 Dias Ganho: 4 Status: Offline Autor Denunciar Compartilhar Postado 2 de Outubro de 2012 valeu obrigado Só me exclarece uma dúvida aonde está diferença nesta sentença acima para que ela seja uma PIVOT Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
araujoronaldo Postado 2 de Outubro de 2012 Tópicos Que Criei: 67 Tópicos/Dia: 0.01 Meu Conteúdo: 269 Conteúdo/Dia: 0.05 Reputação: 9 Pontos/Conquistas: 2.029 Conteúdo Resolvido: 0 Dias Ganho: 5 Status: Offline Dispositivo: Windows Denunciar Compartilhar Postado 2 de Outubro de 2012 Antony, Pelo pouco que sei, utilizando o operador PIVOT, escreve-se bem menos que usando CASE WHEN. No caso desse seu exemplo, o resultado é um PIVOT pois apresenta os dados somados em colunas. Porém utilizando CASE WHEN Dê uma olhada na NET sobre a sintaxe do PIVOT. Se algum colega puder dar mais parcela de contribuição, será bem vindo. Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Frederico Postado 3 de Outubro de 2012 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 3 de Outubro de 2012 Antony, Com o Pivot você torna a sua consulta SQL dinamizada, nesse caso de Mês por exemplo é simples pois você têm 12 meses, mas imagine no lugar dos mês ser os seus produtos e onde está os produtos é o mês. Agora imagine você fazer o case when de todos os produtos ou de um grupo de produtos que você tem, e mais se entrar mais um grupo de produtos ou mais um produto, você precisaria dar manutenção no código. Usando o Pivot você só precisa adicionar o código do grupo de produto ou do produto e query já encaixa a nova coluna. Abaixo um exemplo de sentença usando o Pivot, no exemplo abaixo a sequência em que o SQL executa a consulta SQL. /* 3 Parte */ SELECT * FROM /* 1 Parte */ (SELECT CodCli, DATEPART(M,datapedido) AS MES ,ValorTotal from pedido) AS A /* 2 parte*/ PIVOT (SUM (ValorTotal) FOR MES IN ([01], [02], [03], [04], [05],[06], [07], [08], [09], [10], [11],[12])) AS pvt where Codcli = @Codcli) []'s Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Antony Postado 3 de Outubro de 2012 Tópicos Que Criei: 138 Tópicos/Dia: 0.03 Meu Conteúdo: 567 Conteúdo/Dia: 0.12 Reputação: 6 Pontos/Conquistas: 4.176 Conteúdo Resolvido: 0 Dias Ganho: 4 Status: Offline Autor Denunciar Compartilhar Postado 3 de Outubro de 2012 Antony, Com o Pivot você torna a sua consulta SQL dinamizada, nesse caso de Mês por exemplo é simples pois você têm 12 meses, mas imagine no lugar dos mês ser os seus produtos e onde está os produtos é o mês. Agora imagine você fazer o case when de todos os produtos ou de um grupo de produtos que você tem, e mais se entrar mais um grupo de produtos ou mais um produto, você precisaria dar manutenção no código. Usando o Pivot você só precisa adicionar o código do grupo de produto ou do produto e query já encaixa a nova coluna. Abaixo um exemplo de sentença usando o Pivot, no exemplo abaixo a sequência em que o SQL executa a consulta SQL. /* 3 Parte */ SELECT * FROM /* 1 Parte */ (SELECT CodCli, DATEPART(M,datapedido) AS MES ,ValorTotal from pedido) AS A /* 2 parte*/ PIVOT (SUM (ValorTotal) FOR MES IN ([01], [02], [03], [04], [05],[06], [07], [08], [09], [10], [11],[12])) AS pvt where Codcli = @Codcli) []'s Bom dia Frederico neste seu exemplo vc usou a sintaxe Pivot , nesta sentença abaixo não foi usado nenhuma sintaxe Pivot e a sentença criou coluna dos meses. SELECT C.CODIGOREDUZIDO, C.NOMEFANTASIA, A.CODUND, SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 1 THEN A.QUANTIDADE END) AS 'JAN', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 2 THEN A.QUANTIDADE END) AS 'FEV', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 3 THEN A.QUANTIDADE END) AS 'MAR', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 4 THEN A.QUANTIDADE END) AS 'ABR', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 5 THEN A.QUANTIDADE END) AS 'MAI', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 6 THEN A.QUANTIDADE END) AS 'JUN', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 7 THEN A.QUANTIDADE END) AS 'JUL', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 8 THEN A.QUANTIDADE END) AS 'AGO', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 9 THEN A.QUANTIDADE END) AS 'SET', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 10 THEN A.QUANTIDADE END) AS 'OUT', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 11 THEN A.QUANTIDADE END) AS 'NOV', SUM(CASE WHEN DATEPART(MONTH,B.DATAEMISSAO) = 12 THEN A.QUANTIDADE END) AS 'DEZ' FROM TITMMOV A (NOLOCK) INNER JOIN TMOV B ON B.CODCOLIGADA = A.CODCOLIGADA AND B.IDMOV = A.IDMOV INNER JOIN TPRD C ON C.CODCOLIGADA = A.CODCOLIGADA AND C.IDPRD = A.IDPRD LEFT OUTER JOIN TTB4 E ON E.CODCOLIGADA = C.CODCOLIGADA AND E.CODTB4FAT = C.CODTB4FAT WHERE A.CODCOLIGADA ='1' AND B.STATUS <> 'C' AND B.DATAEMISSAO >='2012-01-01' AND B.DATAEMISSAO <='2012-12-31' AND B.CODTMV ='1.2.01' GROUP BY C.CODIGOREDUZIDO, C.NOMEFANTASIA, A.CODUND ORDER BY C.NOMEFANTASIA Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados