sql não esta agrupando.
A algum tempo estou com este problema. Montei a sql com ajuda do pessoal aqui do forum da seguinte forma:
SQL = "SELECT DISTINCT A.ID_FAZENDA, A.NOME_FAZENDA, " & _
" (Select Coalesce(Sum(RAM.VALORT_MAQUINARIOS),0) From REGISTRO_APLICACOES_MAQUINARIO RAM where B.COD_FAZENDA = A.ID_FAZENDA) as VALOR_TOTAL_MAQUINARIOS, " & _
" (Select Coalesce(Sum(RAI.VALOR_TOTAL),0) From REGISTRO_APLICACOES_INSUMO RAI where B.COD_FAZENDA = A.ID_FAZENDA) as VALOR_TOTAL_INSUMOS, " & _
" (Select Coalesce(Sum(RAF.VALORT_FUNCIONARIOS),0) From REGISTRO_APLICACOES_FUNC RAF where B.COD_FAZENDA = A.ID_FAZENDA) as VALOR_TOTAL_FUNCIONARIOS, " & _
" (Select Coalesce(Sum(RMC.VALOR_TOTAL),0) From RAST_MOV_COLHEITA RMC where C.COD_FAZENDA = A.ID_FAZENDA) as COLHEITA_FUNCIONARIOS, " & _
" (Select Coalesce(Sum(RMM.VALOR_TOTAL),0) From RAST_MOVIMENTACAO_MAQUINARIO RMM where C.COD_FAZENDA = A.ID_FAZENDA) as COLHEITA_MAQUINARIOS, " & _
" (Select Coalesce(Sum(AB.VALOR_TOTAL),0) From ABASTECIMENTO AB where C.COD_FAZENDA = A.ID_FAZENDA) as ABASTECIMENTO, " & _
" (Select Coalesce(Sum(ME.VALOR),0) From MANUTENCAO_EQUIPAMENTOS ME where C.COD_FAZENDA = A.ID_FAZENDA) as MANUTENCAO_MAQUINARIOS, " & _
" (Select Coalesce(Sum(CT.AREA2),0) From CAD_TALHOES CT where C.COD_FAZENDA = A.ID_FAZENDA) as AREA, " & _
" (Select Coalesce(sum(FP.VALOR_TOTAL),0) From FIN_PAGAMENTOS FP LEFT JOIN FIN_PLANO_CONTAS FPC ON FP.COD_PLANO_CONTAS=FPC.ID_PLANO_CONTAS WHERE FPC.CUSTO='Sim' and B.COD_FAZENDA = A.ID_FAZENDA) as PAGAMENTOS , " & _
" (Select Coalesce(Sum(RAM.VALORT_MAQUINARIOS),0) From REGISTRO_APLICACOES_MAQUINARIO RAM where B.COD_FAZENDA = A.ID_FAZENDA) + (Select Coalesce(Sum(RAI.VALOR_TOTAL),0) From REGISTRO_APLICACOES_INSUMO RAI where B.COD_FAZENDA = A.ID_FAZENDA)+ (Select Coalesce(Sum(RAF.VALORT_FUNCIONARIOS),0) From REGISTRO_APLICACOES_FUNC RAF where B.COD_FAZENDA = A.ID_FAZENDA)+ (Select Coalesce(Sum(RMC.VALOR_TOTAL),0) From RAST_MOV_COLHEITA RMC where C.COD_FAZENDA = A.ID_FAZENDA)+(Select Coalesce(Sum(RMM.VALOR_TOTAL),0) From RAST_MOVIMENTACAO_MAQUINARIO RMM where C.COD_FAZENDA = A.ID_FAZENDA)+(Select Coalesce(Sum(AB.VALOR_TOTAL),0) From ABASTECIMENTO AB where C.COD_FAZENDA = A.ID_FAZENDA) + (Select Coalesce(Sum(ME.VALOR),0) From MANUTENCAO_EQUIPAMENTOS ME where C.COD_FAZENDA = A.ID_FAZENDA)" & _
"+ (Select Coalesce(sum(FP.VALOR_TOTAL),0) From FIN_PAGAMENTOS FP LEFT JOIN FIN_PLANO_CONTAS FPC ON FP.COD_PLANO_CONTAS=FPC.ID_PLANO_CONTAS WHERE FPC.CUSTO='Sim' and B.COD_FAZENDA = A.ID_FAZENDA) AS CUSTO_GERAL , " & _
" (Select Coalesce(Sum(PC.PREVISTO),0) From PLANO_COLHEITA PC where C.COD_FAZENDA = A.ID_FAZENDA) AS PREVISTO," & _
" (Select Coalesce(Sum(PC1.REALIZADO),0) From PLANO_COLHEITA PC1 where C.COD_FAZENDA = A.ID_FAZENDA) AS REALIZADO " & _
" FROM ((CAD_FAZENDA A LEFT JOIN REGISTRO_APLICACOES B ON B.COD_FAZENDA = A.ID_FAZENDA)" & _
" LEFT JOIN RAST_MOVIMENTACAO C ON C.COD_FAZENDA=A.ID_FAZENDA)" & _
" WHERE A.ID_FAZENDA=" & Identificador_fazenda & _
" AND B.COD_TALHAO>=" & txtTalhaoInicial.Text & "AND B.COD_TALHAO<=" & txtTalhaoFinal.Text
Porem ao aplicar um filtro por data assim:
SQL = SQL & " AND B.DATA_INICIAL>= '" & Format(txtDataInicial.Text, "yyyy-mm-dd") & "'"
slq = SQL & " AND B.DATA_INICIAL<='" & Format(txtDataFinal.Text, "yyyy-mm-dd") & "' "
O sistema então desprezava a condição da data. Por susgestão aqui mesmo do forum remontei a sql ficando assim:
SQL = "Select DISTINCT A.ID_FAZENDA, A.NOME_FAZENDA," & _
"(Select Coalesce(Sum(RAM.VALORT_MAQUINARIOS),0) From REGISTRO_APLICACOES_MAQUINARIO RAM where RAM.COD_REGISTRO_APLICACOES = B.ID_REGISTRO_APLICACOES) as VALOR_TOTAL_MAQUINARIOS," & _
"(Select Coalesce(Sum(RAI.VALOR_TOTAL),0) From REGISTRO_APLICACOES_INSUMO RAI where RAI.COD_REGISTRO_APLICACOES = B.ID_REGISTRO_APLICACOES) as VALOR_TOTAL_INSUMOS," & _
"(Select Coalesce(Sum(RAF.VALORT_FUNCIONARIOS),0) From REGISTRO_APLICACOES_FUNC RAF where RAF.COD_REGISTROS_APLICACOES = B.ID_REGISTRO_APLICACOES) as VALOR_TOTAL_FUNCIONARIOS," & _
"(Select Coalesce(Sum(RMC.VALOR_TOTAL),0) From RAST_MOV_COLHEITA RMC where RMC.COD_RAST_MOVIMENTACAO = C.ID_RAST_MOVIMENTACAO) as COLHEITA_FUNCIONARIOS," & _
"(Select Coalesce(Sum(RMM.VALOR_TOTAL),0) From RAST_MOVIMENTACAO_MAQUINARIO RMM where RMM.COD_RAST_MOVIMENTACAO = C.ID_RAST_MOVIMENTACAO) as COLHEITA_MAQUINARIOS," & _
"(Select Coalesce(Sum(ME.VALOR),0) From MANUTENCAO_EQUIPAMENTOS ME where ME.COD_MAQUINARIO = D.ID_MAQUINARIO) as MANUTENCAO_MAQUINARIOS, " & _
"(Select Coalesce(Sum(AB.VALOR_TOTAL),0) From ABASTECIMENTO AB where AB.COD_MAQUINARIO = D.ID_MAQUINARIO) as ABASTECIMENTO," & _
"(Select Coalesce(Sum(RAM.VALORT_MAQUINARIOS),0) From REGISTRO_APLICACOES_MAQUINARIO RAM where RAM.COD_REGISTRO_APLICACOES = B.ID_REGISTRO_APLICACOES) + (Select Coalesce(Sum(RAI.VALOR_TOTAL),0) From REGISTRO_APLICACOES_INSUMO RAI where RAI.COD_REGISTRO_APLICACOES = B.ID_REGISTRO_APLICACOES)+(Select Coalesce(Sum(RAF.VALORT_FUNCIONARIOS),0) From REGISTRO_APLICACOES_FUNC RAF where RAF.COD_REGISTROS_APLICACOES = B.ID_REGISTRO_APLICACOES) + " & _
"(Select Coalesce(Sum(RMC.VALOR_TOTAL),0) From RAST_MOV_COLHEITA RMC where RMC.COD_RAST_MOVIMENTACAO = C.ID_RAST_MOVIMENTACAO)+(Select Coalesce(Sum(RMM.VALOR_TOTAL),0) From RAST_MOVIMENTACAO_MAQUINARIO RMM where RMM.COD_RAST_MOVIMENTACAO = C.ID_RAST_MOVIMENTACAO)+ (Select Coalesce(Sum(ME.VALOR),0) From MANUTENCAO_EQUIPAMENTOS ME where ME.COD_MAQUINARIO = D.ID_MAQUINARIO) + " & _
"(Select Coalesce(Sum(AB.VALOR_TOTAL),0) From ABASTECIMENTO AB where AB.COD_MAQUINARIO = D.ID_MAQUINARIO) as CUSTO_GERAL ," & _
"(Select Coalesce(Sum(CT.AREA2),0) From CAD_TALHOES CT where C.COD_FAZENDA = A.ID_FAZENDA) as AREA, " & _
"(Select Coalesce(sum(FP.VALOR_TOTAL),0) From FIN_PAGAMENTOS FP LEFT JOIN FIN_PLANO_CONTAS FPC ON FP.COD_PLANO_CONTAS=FPC.ID_PLANO_CONTAS WHERE FPC.CUSTO='Sim' and B.COD_FAZENDA = A.ID_FAZENDA) as PAGAMENTOS, " & _
"(Select Coalesce(Sum(PC.PREVISTO),0) From PLANO_COLHEITA PC where C.COD_FAZENDA = A.ID_FAZENDA) AS PREVISTO," & _
"(Select Coalesce(Sum(PC1.REALIZADO),0) From PLANO_COLHEITA PC1 where C.COD_FAZENDA = A.ID_FAZENDA) AS REALIZADO " & _
" From (((CAD_FAZENDA a Left Join REGISTRO_APLICACOES B ON B.COD_FAZENDA = A.ID_FAZENDA)" & _
" Left Join RAST_MOVIMENTACAO C ON C.COD_FAZENDA=A.ID_FAZENDA)" & _
" Left Join CAD_MAQUINARIO D ON D.COD_FAZENDA=A.ID_FAZENDA)" & _
" Where a.ID_FAZENDA = " & Identificador_fazenda & _
" And B.COD_TALHAO >= " & txtTalhaoInicial.Text & " And B.COD_TALHAO <= " & txtTalhaoFinal.Text
Porem agora relatorio não esta agrupando. No relatorio saiu todas por exemplo, o somatorio de todas as manutenções, de todos abastecimentos. Um relatorio que era para ter 1 pagina, fica com 96 paginas. Alguem poderia me ajudar.
SQL = "SELECT DISTINCT A.ID_FAZENDA, A.NOME_FAZENDA, " & _
" (Select Coalesce(Sum(RAM.VALORT_MAQUINARIOS),0) From REGISTRO_APLICACOES_MAQUINARIO RAM where B.COD_FAZENDA = A.ID_FAZENDA) as VALOR_TOTAL_MAQUINARIOS, " & _
" (Select Coalesce(Sum(RAI.VALOR_TOTAL),0) From REGISTRO_APLICACOES_INSUMO RAI where B.COD_FAZENDA = A.ID_FAZENDA) as VALOR_TOTAL_INSUMOS, " & _
" (Select Coalesce(Sum(RAF.VALORT_FUNCIONARIOS),0) From REGISTRO_APLICACOES_FUNC RAF where B.COD_FAZENDA = A.ID_FAZENDA) as VALOR_TOTAL_FUNCIONARIOS, " & _
" (Select Coalesce(Sum(RMC.VALOR_TOTAL),0) From RAST_MOV_COLHEITA RMC where C.COD_FAZENDA = A.ID_FAZENDA) as COLHEITA_FUNCIONARIOS, " & _
" (Select Coalesce(Sum(RMM.VALOR_TOTAL),0) From RAST_MOVIMENTACAO_MAQUINARIO RMM where C.COD_FAZENDA = A.ID_FAZENDA) as COLHEITA_MAQUINARIOS, " & _
" (Select Coalesce(Sum(AB.VALOR_TOTAL),0) From ABASTECIMENTO AB where C.COD_FAZENDA = A.ID_FAZENDA) as ABASTECIMENTO, " & _
" (Select Coalesce(Sum(ME.VALOR),0) From MANUTENCAO_EQUIPAMENTOS ME where C.COD_FAZENDA = A.ID_FAZENDA) as MANUTENCAO_MAQUINARIOS, " & _
" (Select Coalesce(Sum(CT.AREA2),0) From CAD_TALHOES CT where C.COD_FAZENDA = A.ID_FAZENDA) as AREA, " & _
" (Select Coalesce(sum(FP.VALOR_TOTAL),0) From FIN_PAGAMENTOS FP LEFT JOIN FIN_PLANO_CONTAS FPC ON FP.COD_PLANO_CONTAS=FPC.ID_PLANO_CONTAS WHERE FPC.CUSTO='Sim' and B.COD_FAZENDA = A.ID_FAZENDA) as PAGAMENTOS , " & _
" (Select Coalesce(Sum(RAM.VALORT_MAQUINARIOS),0) From REGISTRO_APLICACOES_MAQUINARIO RAM where B.COD_FAZENDA = A.ID_FAZENDA) + (Select Coalesce(Sum(RAI.VALOR_TOTAL),0) From REGISTRO_APLICACOES_INSUMO RAI where B.COD_FAZENDA = A.ID_FAZENDA)+ (Select Coalesce(Sum(RAF.VALORT_FUNCIONARIOS),0) From REGISTRO_APLICACOES_FUNC RAF where B.COD_FAZENDA = A.ID_FAZENDA)+ (Select Coalesce(Sum(RMC.VALOR_TOTAL),0) From RAST_MOV_COLHEITA RMC where C.COD_FAZENDA = A.ID_FAZENDA)+(Select Coalesce(Sum(RMM.VALOR_TOTAL),0) From RAST_MOVIMENTACAO_MAQUINARIO RMM where C.COD_FAZENDA = A.ID_FAZENDA)+(Select Coalesce(Sum(AB.VALOR_TOTAL),0) From ABASTECIMENTO AB where C.COD_FAZENDA = A.ID_FAZENDA) + (Select Coalesce(Sum(ME.VALOR),0) From MANUTENCAO_EQUIPAMENTOS ME where C.COD_FAZENDA = A.ID_FAZENDA)" & _
"+ (Select Coalesce(sum(FP.VALOR_TOTAL),0) From FIN_PAGAMENTOS FP LEFT JOIN FIN_PLANO_CONTAS FPC ON FP.COD_PLANO_CONTAS=FPC.ID_PLANO_CONTAS WHERE FPC.CUSTO='Sim' and B.COD_FAZENDA = A.ID_FAZENDA) AS CUSTO_GERAL , " & _
" (Select Coalesce(Sum(PC.PREVISTO),0) From PLANO_COLHEITA PC where C.COD_FAZENDA = A.ID_FAZENDA) AS PREVISTO," & _
" (Select Coalesce(Sum(PC1.REALIZADO),0) From PLANO_COLHEITA PC1 where C.COD_FAZENDA = A.ID_FAZENDA) AS REALIZADO " & _
" FROM ((CAD_FAZENDA A LEFT JOIN REGISTRO_APLICACOES B ON B.COD_FAZENDA = A.ID_FAZENDA)" & _
" LEFT JOIN RAST_MOVIMENTACAO C ON C.COD_FAZENDA=A.ID_FAZENDA)" & _
" WHERE A.ID_FAZENDA=" & Identificador_fazenda & _
" AND B.COD_TALHAO>=" & txtTalhaoInicial.Text & "AND B.COD_TALHAO<=" & txtTalhaoFinal.Text
Porem ao aplicar um filtro por data assim:
SQL = SQL & " AND B.DATA_INICIAL>= '" & Format(txtDataInicial.Text, "yyyy-mm-dd") & "'"
slq = SQL & " AND B.DATA_INICIAL<='" & Format(txtDataFinal.Text, "yyyy-mm-dd") & "' "
O sistema então desprezava a condição da data. Por susgestão aqui mesmo do forum remontei a sql ficando assim:
SQL = "Select DISTINCT A.ID_FAZENDA, A.NOME_FAZENDA," & _
"(Select Coalesce(Sum(RAM.VALORT_MAQUINARIOS),0) From REGISTRO_APLICACOES_MAQUINARIO RAM where RAM.COD_REGISTRO_APLICACOES = B.ID_REGISTRO_APLICACOES) as VALOR_TOTAL_MAQUINARIOS," & _
"(Select Coalesce(Sum(RAI.VALOR_TOTAL),0) From REGISTRO_APLICACOES_INSUMO RAI where RAI.COD_REGISTRO_APLICACOES = B.ID_REGISTRO_APLICACOES) as VALOR_TOTAL_INSUMOS," & _
"(Select Coalesce(Sum(RAF.VALORT_FUNCIONARIOS),0) From REGISTRO_APLICACOES_FUNC RAF where RAF.COD_REGISTROS_APLICACOES = B.ID_REGISTRO_APLICACOES) as VALOR_TOTAL_FUNCIONARIOS," & _
"(Select Coalesce(Sum(RMC.VALOR_TOTAL),0) From RAST_MOV_COLHEITA RMC where RMC.COD_RAST_MOVIMENTACAO = C.ID_RAST_MOVIMENTACAO) as COLHEITA_FUNCIONARIOS," & _
"(Select Coalesce(Sum(RMM.VALOR_TOTAL),0) From RAST_MOVIMENTACAO_MAQUINARIO RMM where RMM.COD_RAST_MOVIMENTACAO = C.ID_RAST_MOVIMENTACAO) as COLHEITA_MAQUINARIOS," & _
"(Select Coalesce(Sum(ME.VALOR),0) From MANUTENCAO_EQUIPAMENTOS ME where ME.COD_MAQUINARIO = D.ID_MAQUINARIO) as MANUTENCAO_MAQUINARIOS, " & _
"(Select Coalesce(Sum(AB.VALOR_TOTAL),0) From ABASTECIMENTO AB where AB.COD_MAQUINARIO = D.ID_MAQUINARIO) as ABASTECIMENTO," & _
"(Select Coalesce(Sum(RAM.VALORT_MAQUINARIOS),0) From REGISTRO_APLICACOES_MAQUINARIO RAM where RAM.COD_REGISTRO_APLICACOES = B.ID_REGISTRO_APLICACOES) + (Select Coalesce(Sum(RAI.VALOR_TOTAL),0) From REGISTRO_APLICACOES_INSUMO RAI where RAI.COD_REGISTRO_APLICACOES = B.ID_REGISTRO_APLICACOES)+(Select Coalesce(Sum(RAF.VALORT_FUNCIONARIOS),0) From REGISTRO_APLICACOES_FUNC RAF where RAF.COD_REGISTROS_APLICACOES = B.ID_REGISTRO_APLICACOES) + " & _
"(Select Coalesce(Sum(RMC.VALOR_TOTAL),0) From RAST_MOV_COLHEITA RMC where RMC.COD_RAST_MOVIMENTACAO = C.ID_RAST_MOVIMENTACAO)+(Select Coalesce(Sum(RMM.VALOR_TOTAL),0) From RAST_MOVIMENTACAO_MAQUINARIO RMM where RMM.COD_RAST_MOVIMENTACAO = C.ID_RAST_MOVIMENTACAO)+ (Select Coalesce(Sum(ME.VALOR),0) From MANUTENCAO_EQUIPAMENTOS ME where ME.COD_MAQUINARIO = D.ID_MAQUINARIO) + " & _
"(Select Coalesce(Sum(AB.VALOR_TOTAL),0) From ABASTECIMENTO AB where AB.COD_MAQUINARIO = D.ID_MAQUINARIO) as CUSTO_GERAL ," & _
"(Select Coalesce(Sum(CT.AREA2),0) From CAD_TALHOES CT where C.COD_FAZENDA = A.ID_FAZENDA) as AREA, " & _
"(Select Coalesce(sum(FP.VALOR_TOTAL),0) From FIN_PAGAMENTOS FP LEFT JOIN FIN_PLANO_CONTAS FPC ON FP.COD_PLANO_CONTAS=FPC.ID_PLANO_CONTAS WHERE FPC.CUSTO='Sim' and B.COD_FAZENDA = A.ID_FAZENDA) as PAGAMENTOS, " & _
"(Select Coalesce(Sum(PC.PREVISTO),0) From PLANO_COLHEITA PC where C.COD_FAZENDA = A.ID_FAZENDA) AS PREVISTO," & _
"(Select Coalesce(Sum(PC1.REALIZADO),0) From PLANO_COLHEITA PC1 where C.COD_FAZENDA = A.ID_FAZENDA) AS REALIZADO " & _
" From (((CAD_FAZENDA a Left Join REGISTRO_APLICACOES B ON B.COD_FAZENDA = A.ID_FAZENDA)" & _
" Left Join RAST_MOVIMENTACAO C ON C.COD_FAZENDA=A.ID_FAZENDA)" & _
" Left Join CAD_MAQUINARIO D ON D.COD_FAZENDA=A.ID_FAZENDA)" & _
" Where a.ID_FAZENDA = " & Identificador_fazenda & _
" And B.COD_TALHAO >= " & txtTalhaoInicial.Text & " And B.COD_TALHAO <= " & txtTalhaoFinal.Text
Porem agora relatorio não esta agrupando. No relatorio saiu todas por exemplo, o somatorio de todas as manutenções, de todos abastecimentos. Um relatorio que era para ter 1 pagina, fica com 96 paginas. Alguem poderia me ajudar.
Paulo Henrique
Curtidas 0