CALCULO COM SQL
Citação:SQL = [Ô]SELECT DISTINCT A.ID_MAQUINARIO,[Ô] & _
[Ô](Select Sum(VALORT_MAQUINARIOS)as VALORT_REGISTRO From REGISTRO_APLICACOES_MAQUINARIO Where REGISTRO_APLICACOES_MAQUINARIO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]) as CUSTO_REGISTRO_APLICACOES,[Ô] & _
[Ô](((Select Sum(VALORT_MAQUINARIOS)as VTR From REGISTRO_APLICACOES_MAQUINARIO Where REGISTRO_APLICACOES_MAQUINARIO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]) *100)/((Select Sum(VALORT_MAQUINARIOS)as VALORT_REGISTRO From REGISTRO_APLICACOES_MAQUINARIO Where REGISTRO_APLICACOES_MAQUINARIO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]) + (Select Sum(VALOR_TOTAL)as VALORT_ABASTECIMENTO From ABASTECIMENTO Where ABASTECIMENTO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô])+ (Select Sum(VALOR)as VALORT_MANUTENCAO From MANUTENCAO_EQUIPAMENTOS Where MANUTENCAO_EQUIPAMENTOS.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]))) AS P1,[Ô] & _
[Ô](Select Sum(VALOR_TOTAL)as VALORT_ABASTECIMENTO From ABASTECIMENTO Where ABASTECIMENTO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]) as CUSTO_ABASTECIMENTO,[Ô] & _
[Ô](((Select Sum(VALOR_TOTAL)as VALORT_ABASTECIMENTO From ABASTECIMENTO Where ABASTECIMENTO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]) *100)/((Select Sum(VALORT_MAQUINARIOS)as VALORT_REGISTRO From REGISTRO_APLICACOES_MAQUINARIO Where REGISTRO_APLICACOES_MAQUINARIO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]) + (Select Sum(VALOR_TOTAL)as VALORT_ABASTECIMENTO From ABASTECIMENTO Where ABASTECIMENTO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô])+ (Select Sum(VALOR)as VALORT_MANUTENCAO From MANUTENCAO_EQUIPAMENTOS Where MANUTENCAO_EQUIPAMENTOS.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]))) AS P2,[Ô] & _
[Ô](Select Sum(VALOR)as VALORT_MANUTENCAO From MANUTENCAO_EQUIPAMENTOS Where MANUTENCAO_EQUIPAMENTOS.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]) as CUSTO_MANUTENCAO,[Ô] & _
[Ô](((Select Sum(VALOR)as VALORT_MANUTENCAO From MANUTENCAO_EQUIPAMENTOS Where MANUTENCAO_EQUIPAMENTOS.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]) *100)/((Select Sum(VALORT_MAQUINARIOS)as VALORT_REGISTRO From REGISTRO_APLICACOES_MAQUINARIO Where REGISTRO_APLICACOES_MAQUINARIO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]) + (Select Sum(VALOR_TOTAL)as VALORT_ABASTECIMENTO From ABASTECIMENTO Where ABASTECIMENTO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô])+ (Select Sum(VALOR)as VALORT_MANUTENCAO From MANUTENCAO_EQUIPAMENTOS Where MANUTENCAO_EQUIPAMENTOS.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]))) AS P3,[Ô] & _
[Ô]((Select Sum(VALORT_MAQUINARIOS)as VALORT_REGISTRO From REGISTRO_APLICACOES_MAQUINARIO Where REGISTRO_APLICACOES_MAQUINARIO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]) + (Select Sum(VALOR_TOTAL)as VALORT_ABASTECIMENTO From ABASTECIMENTO Where ABASTECIMENTO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô])+ (Select Sum(VALOR)as VALORT_MANUTENCAO From MANUTENCAO_EQUIPAMENTOS Where MANUTENCAO_EQUIPAMENTOS.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô])) AS CUSTO_TOTAL,[Ô] & _
[Ô]A.ID_MAQUINARIO,A.MARCA,A.MODELO,B.NOME [Ô] & _
[Ô] FROM CAD_MAQUINARIO A LEFT JOIN CAD_TIPO_MAQUINARIO B ON B.ID_TIPO_MAQUINARIO = A.COD_TIPO_MAQUINARIO [Ô] & _
[Ô] LEFT JOIN REGISTRO_APLICACOES_MAQUINARIO C ON C.COD_MAQUINARIO=A.ID_MAQUINARIO[Ô] & _
[Ô] LEFT JOIN ABASTECIMENTO D ON D.COD_MAQUINARIO=A.ID_MAQUINARIO[Ô] & _
[Ô] LEFT JOIN MANUTENCAO_EQUIPAMENTOS E ON E.COD_MAQUINARIO=A.ID_MAQUINARIO[Ô] & _
[Ô] WHERE A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô] [Ô]
Ela funciona, mas na parte onde eu calculo a porcentagem ja esta vindo totalizado de todos os insumos, e eu gostaria que viesse de insumo por insumo. Alguem poderia me ajudar a descobrir o que estou fazendo de errado?
vc tá usando algum SGBD? Se sim, já pensou na possibilidade de uma Stored Procedure ? Sem um exemplo tá dificil. Diga quais são as tabelas, e dá um print no resultado da consulta e mostra pra gente.
Não via na sua consulta um Group By, ja tentou usar ele nos insumos???
Citação:SQL = [Ô] SELECT cmq.id_maquinario,[Ô] & _
[Ô]SUM(ram.valort_maquinarios) AS custo_registro_aplicacoes,[Ô] & _
[Ô](SUM(ram.valort_maquinarios) * 100) / ( SUM(ram.valort_maquinarios)[Ô] & _
[Ô] + SUM(abt.valor_total)[Ô] & _
[Ô] + SUM(meq.valor))AS P1,[Ô] & _
[Ô] SUM(abt.valor_total)AS custo_abastecimento,[Ô] & _
[Ô](SUM(abt.valor_total) * 100) / ( SUM(ram.valort_maquinarios)[Ô] & _
[Ô] + SUM(abt.valor_total)[Ô] & _
[Ô] + SUM(meq.valor))AS P2,[Ô] & _
[Ô] SUM(meq.valor)AS custo_manutencao,[Ô] & _
[Ô](SUM(meq.valor) * 100) / ( SUM(ram.valort_maquinarios)[Ô] & _
[Ô] + SUM(abt.valor_total)[Ô] & _
[Ô] + SUM(meq.valor))AS P3,[Ô] & _
[Ô] SUM(ram.valort_maquinarios) AS custo_total,[Ô] & _
[Ô] cmq.a.marca,cmq.modelo,ctm.nome[Ô] & _
[Ô] FROM cad_maquinario AS cmq [Ô] & _
[Ô] INNER JOIN registro_aplicacoes_maquinario AS ram ON ram.cod_maquinario = cmq.id_maquinario [Ô] & _
[Ô] INNER JOIN abastecimento AS abt ON abt.cod_maquinario=cmq.id_maquinario[Ô] & _
[Ô] INNER JOIN manutencao_equipamentos AS meq ON meq.cod_maquinario=cmq.id_maquinario[Ô] & _
[Ô] INNER JOIN cad_tipo_maquinario AS ctm ON ctm.id_tipo_maquinario = cmq.cod_tipo_maquinario[Ô] & _
[Ô] WHERE cmq.cod_fazenda =[Ô] & Identificador_fazenda & _
[Ô] GROUP BY cmq.id_maquinario, cmq.marca, cmq.modelo, ctm.nome[Ô] & _
[Ô] ORDER BY cmq.id_maquinario, cmq.marca, cmq.modelo, ctm.nome[Ô]
porem aparece o erro de token unknown
Citação:((Select Sum(VALORT_MAQUINARIOS)as VALORT_REGISTRO From REGISTRO_APLICACOES_MAQUINARIO Where REGISTRO_APLICACOES_MAQUINARIO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]) + (Select Sum(VALOR_TOTAL)as VALORT_ABASTECIMENTO From ABASTECIMENTO Where ABASTECIMENTO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô])+ (Select Sum(VALOR)as VALORT_MANUTENCAO From MANUTENCAO_EQUIPAMENTOS Where MANUTENCAO_EQUIPAMENTOS.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô])) AS CUSTO_TOTAL
O sistema só esta calculando o custo total se o maquinario tiver movimentação nas 3 tabelas, creio que teria de ter alguam condição if dentro deste sql para somar a(s) outra(s) tabelas indenpendete se alguma retornou valor null. Se resolver isto acaba todo problema que ainda tenho a resolver neste sistema.
(isnull(( Select Sum(VALORT_MAQUINARIOS)as VALORT_REGISTRO From REGISTRO_APLICACOES_MAQUINARIO Where REGISTRO_APLICACOES_MAQUINARIO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]),0) +
isnull((Select Sum(VALOR_TOTAL)as VALORT_ABASTECIMENTO From ABASTECIMENTO Where ABASTECIMENTO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]),0)+
isnull((Select Sum(VALOR)as VALORT_MANUTENCAO From MANUTENCAO_EQUIPAMENTOS Where MANUTENCAO_EQUIPAMENTOS.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]),0)) AS CUSTO_TOTAL
Citação:SQL = [Ô]SELECT DISTINCT A.ID_MAQUINARIO,[Ô] & _
[Ô](Select Sum(VALORT_MAQUINARIOS)as VALORT_REGISTRO From REGISTRO_APLICACOES_MAQUINARIO Where REGISTRO_APLICACOES_MAQUINARIO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]) as CUSTO_REGISTRO_APLICACOES,[Ô] & _
[Ô](Select Sum(VALOR_TOTAL)as VALORT_ABASTECIMENTO From ABASTECIMENTO Where ABASTECIMENTO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]) as CUSTO_ABASTECIMENTO,[Ô] & _
[Ô](Select Sum(VALOR)as VALORT_MANUTENCAO From MANUTENCAO_EQUIPAMENTOS Where MANUTENCAO_EQUIPAMENTOS.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]) as CUSTO_MANUTENCAO,[Ô] & _
[Ô](COALESCE((Select Sum(VALORT_MAQUINARIOS)as VALORT_REGISTRO From REGISTRO_APLICACOES_MAQUINARIO Where REGISTRO_APLICACOES_MAQUINARIO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô])) + COALESCE((Select Sum(VALOR_TOTAL)as VALORT_ABASTECIMENTO From ABASTECIMENTO Where ABASTECIMENTO.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]),0)+ COALESCE((Select Sum(VALOR)as VALORT_MANUTENCAO From MANUTENCAO_EQUIPAMENTOS Where MANUTENCAO_EQUIPAMENTOS.Cod_MAQUINARIO=A.ID_MAQUINARIO AND A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô]),0)) AS CUSTO_TOTAL[Ô] & _
[Ô]A.ID_MAQUINARIO,A.MARCA,A.MODELO,B.NOME [Ô] & _
[Ô] FROM CAD_MAQUINARIO A LEFT JOIN CAD_TIPO_MAQUINARIO B ON B.ID_TIPO_MAQUINARIO = A.COD_TIPO_MAQUINARIO [Ô] & _
[Ô] LEFT JOIN REGISTRO_APLICACOES_MAQUINARIO C ON C.COD_MAQUINARIO=A.ID_MAQUINARIO[Ô] & _
[Ô] LEFT JOIN ABASTECIMENTO D ON D.COD_MAQUINARIO=A.ID_MAQUINARIO[Ô] & _
[Ô] LEFT JOIN MANUTENCAO_EQUIPAMENTOS E ON E.COD_MAQUINARIO=A.ID_MAQUINARIO[Ô] & _
[Ô] WHERE A.COD_FAZENDA=[Ô] & Identificador_fazenda & [Ô] [Ô]
SQL = [Ô]SELECT [Ô] & _
[Ô] A.ID_MAQUINARIO, A.MARCA, A.MODELO, B.NOME, [Ô] & _
[Ô] (Select Coalesce(Sum(RAM.VALORT_MAQUINARIOS),0) [Ô] & _
[Ô] From REGISTRO_APLICACOES_MAQUINARIO RAM [Ô] & _
[Ô] where RAM.Cod_MAQUINARIO=A.ID_MAQUINARIO) as CUSTO_REGISTRO_APLICACOES, [Ô] & _
[Ô] (Select Coalesce(Sum(AB.VALOR_TOTAL),0) [Ô] & _
[Ô] From ABASTECIMENTO AB [Ô] & _
[Ô] Where AB.Cod_MAQUINARIO=A.ID_MAQUINARIO) as CUSTO_ABASTECIMENTO, [Ô] & _
[Ô] (Select Coalesce(Sum(ME.VALOR),0) [Ô] & _
[Ô] From MANUTENCAO_EQUIPAMENTOS ME [Ô] & _
[Ô] Where ME.Cod_MAQUINARIO=A.ID_MAQUINARIO) as CUSTO_MANUTENCAO, [Ô] & _
[Ô] ( (Select Coalesce(Sum(RAM.VALORT_MAQUINARIOS),0) [Ô] & _
[Ô] From REGISTRO_APLICACOES_MAQUINARIO RAM [Ô] & _
[Ô] Where RAM.Cod_MAQUINARIO=A.ID_MAQUINARIO) + [Ô] & _
[Ô] (Select Coalesce(Sum(AB.VALOR_TOTAL),0) [Ô] & _
[Ô] From ABASTECIMENTO AB [Ô] & _
[Ô] Where AB.Cod_MAQUINARIO=A.ID_MAQUINARIO) + [Ô] & _
[Ô] (Select Coalesce(Sum(ME.VALOR),0) [Ô] & _
[Ô] From MANUTENCAO_EQUIPAMENTOS ME [Ô] & _
[Ô] Where ME.Cod_MAQUINARIO=A.ID_MAQUINARIO) [Ô] & _
[Ô] ) AS CUSTO_TOTAL [Ô] & _
[Ô]FROM CAD_MAQUINARIO A [Ô] & _
[Ô]LEFT JOIN CAD_TIPO_MAQUINARIO B ON B.ID_TIPO_MAQUINARIO = A.COD_TIPO_MAQUINARIO [Ô] & _
[Ô]WHERE A.COD_FAZENDA = [Ô] & Identificador_fazenda
porem agora eu preciso fazer um filtro que esta na tabela abastecimento, eu tentei fazer:
Citação:SQL = SQL & [Ô] AND AB.DATA >=[ô][Ô] & Format(txtDataInicial.Text, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô][Ô]
SQL = SQL & [Ô] AND AB.DATA <=[ô][Ô] & Format(txtData.Text, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô][Ô]
mas deu erro, tentei voltar o relacionamento para a parte final do sql, mas também da erro, alguem tem alguma ideia para me ajudar?