Abri um tópico ontem, mas não sei como continuar, se eu fizer
SELECT id,date,machineId,BELLY_DOOR FROM `counters_history` order by date asc`
sai isso
então posso chegar nessa SQL
SELECT a.id, a.machineId, a.date, a.BELLY_DOOR,
abs((select min(c.BELLY_DOOR) from counters_history c
where a.machineId = c.machineId group by c.machineId limit 1) - BELLY_DOOR)
IN_BELLY_DOOR
FROM counters_history a
GROUP BY date, machineId
ORDER BY machineId, id`
e sai isso
então estou agrupando por maquina, esta me dando um diferencial da menor entrada, para a entrada atual. Mas eu só queria +1 detalhe, que mostre uma somatoria entre as maquinas pelo maior numero de cada maquina.
Exemplo: que ele pegue o id 179. que é 70.000 + o id 180 que é 0 pois a maquina não teve entrada alguma, total de entrada de todas as (duas) maquinas 70.000.
- tem como fazer isso?
- eu não posso usar a coluna IN_BELLY_DOOR, ou seja, pegar valor máximo de cada idmachine? Como?
É o seguinte: a sua duvida me parece ao mesmo tempo simples e ao mesmo tempo desnecessária. já visto que a rotina SQL feita é para tirar a diferença entre dados coexistente entre o agrupamento entre datas. A SQL que eu te passei está rodando perfeitamente que até dados inexistente ela zera (0) a coluna, isso está correto.
Esse outro agrupamento é outra SQL não dá para colocar tudo na mesma até dá para repetir, mas, isso pode ocasionar lentidão pelo número excessivo de linhas repetidas!
Eu realmente faria outra SQL, então pra mim é não!
Outra SQL
SELECT a.machineId, max(a.BELLY_DOOR) valor_total
FROM counters_history a
GROUP BY a.machineId
ORDER BY a.machineId
O resto eu resolveria na própria linguagem!
eu estava tentando e cheguei nisso.
SELECT a.id, a.machineId, a.date, a.BELLY_DOOR,
(select max(c.BELLY_DOOR) from counters_history c where a.machineId = c.machineId group by c.machineId limit 1) -
(select min(c.BELLY_DOOR) from counters_history c where a.machineId = c.machineId group by c.machineId limit 1)
IN_BELLY_DOOR
FROM counters_history a
GROUP BY machineId
ORDER BY machineId, id
dai ele me retorna qual o resultado da maquina 1 e da maquina 2 e assim por diante.
mas eu quero só um somatoria das maquinas = 70.000
e depois que eu entendi que é melhor fazer separado. no ireport deve dar pra fazer 2 sqls pra sair no resultado final.
1 sql pra mostrar o relatorio, e uma la em baixo pra sair o resultado