FAZER UM DISTINCT COM SOMA E AGRUPAR POR MES

ADRIANO2605 02/03/2011 18:45:51
#367064
E ai pessoal, to com uma duvida bruta. Eu estou trabalhando em um relatorio de analise financeira, onde o programa irá buscar da tabela [Ô]Pagar[Ô] os campos subsetor, setor, valorpago, datapgto, situaçao o sql ficou este:
With FrmComp
sql = [Ô]select pagar.subsetor,sum(pagar.valorpago) as vlrpago, pagar.datapgto, setor.setor, setor.CODIGO from pagar inner join setor on pagar.setor = setor.codigo [Ô]
[ô]sql = sql & [Ô]WHERE DATAPGTO >= #[Ô] & Format(.Ctxt(0).Text, [Ô]mm/dd/yyyy[Ô]) & [Ô]# [Ô]
[ô]sql = sql & [Ô]AND DATAPGTO <= #[Ô] & Format(.Ctxt(1).Text, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]
sql = sql & [Ô]WHERE DATAPGTO >= #[Ô] & Format(.Ctxt(0).Text, [Ô]mm/yyyy[Ô]) & [Ô]# [Ô]
sql = sql & [Ô]AND DATAPGTO <= #[Ô] & Format(.Ctxt(1).Text, [Ô]mm/yyyy[Ô]) & [Ô]#[Ô]
sql = sql & [Ô]and SITUAÇAO LIKE [ô][Ô] & [Ô]Pag[Ô] & [Ô][ô] [Ô]
End With
sql = sql & [Ô] group by pagar.subsetor, setor.setor, SETOR.CODIGO, pagar.datapgto [Ô]
sql = sql & [Ô] ORDER BY pagar.datapgto, pagar.subsetor[Ô]

Até ai ele funciona perfeitamente se eu colocar nos ctxt um periodo mensal referente a um mes somente por ex. .ctxt(0).text = 01/03/2011 e .ctxt(1).text = 31/03/2011
Porem apartir do momento que eu coloque um periodo anual q é a verdadeira funcionalidade do relatorios pra fazer balanço anual, ai ele não traz o programa da forma correta.
Ele me traz os subsetores um a um vou subir a imagem do relatorio para vcs verem.
O certo é o que faz o select de um unico mes RelCertoMes03.jpeg - https://docs.google.com/leaf?id=0B7BOn1qqQKEaN2FmZGU2ZTUtOTcyYi00ZWU0LTg2YWYtNjQ1ZTYzOTIzM2I2&hl=pt_BR

o errado é o que faz o select de varios meses RelErradomes 01 ao 03.jpeg - https://docs.google.com/leaf?id=0B7BOn1qqQKEaZDUxOGI1YmUtYTg3MC00NDg0LThkZjUtZWY4ZDcwNGNjM2Jk&hl=pt_BR

Bom desde já agradeço a ajuda de todos, valeu pessoal os links são do google docs.
LLAIA 02/03/2011 21:16:27
#367076
Como o primeiro critério de agrupamento é por data e esta muda, ele vai distribuir os subsetores dentro dessa nova data. Ou vc resolve no seu relatório ou na consulta por agrupar por ano em de data de pagto.
ADRIANO2605 03/03/2011 10:28:26
#367121
Olá pessoal consegui a resposta em outro forum, eu particularmente não conhecia esta formatação dentro do sql.
ai está.
With FrmComp
sql = [Ô]select pagar.subsetor,sum(pagar.valorpago) as vlrpago, DateSerial(Year(pagar.datapgto), Month(pagar.datapgto), 1) As datapagamento, setor.setor, setor.CODIGO from pagar inner join setor on pagar.setor = setor.codigo [Ô]
sql = sql & [Ô]WHERE DATAPGTO >= #[Ô] & Format(.Ctxt(0).Text, [Ô]mm/dd/yyyy[Ô]) & [Ô]# [Ô]
sql = sql & [Ô]AND DATAPGTO <= #[Ô] & Format(.Ctxt(1).Text, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]
sql = sql & [Ô]and SITUAÇAO LIKE [ô][Ô] & [Ô]Pag[Ô] & [Ô][ô] [Ô]
End With
sql = sql & [Ô] group by pagar.subsetor, setor.setor, SETOR.CODIGO, DateSerial(Year(pagar.datapgto), Month(pagar.datapgto), 1) [Ô]
sql = sql & [Ô] ORDER BY DateSerial(Year(pagar.datapgto), Month(pagar.datapgto), 1), pagar.subsetor[Ô]

Por Kuroi forum scriptbrasil....
LLAIA 03/03/2011 13:44:54
#367137
encerre o tópico

dica:

em:

and SITUAÇAO LIKE [ô][Ô] & [Ô]Pag[Ô] & [Ô][ô] [Ô]

troque por:

and SITUAÇAO = [ô][Ô] & [Ô]Pag[Ô] & [Ô][ô] [Ô]
Tópico encerrado , respostas não são mais permitidas