Hace poco tuve que cambiar la forma en que registro el stock y se me ocurrió separarlo en una tabla llamada stock (un nombre muy original). El asunto es que para poder ordenar y discriminar los campos visualizados necesito relacionarlo a la tabla de artículos.
la sentencia toma la forma:
SELECT ref_art, denom, SUM(stock.cantidad) FROM stock INNER JOIN articulo ON (aticulo.id_art = stock.ref_art) GROUP BY ref_art, denom
En este caso los valores son devueltos fácilmente, excepto por que es imposible aplicar una cláusula where debido a la existencia de la cláusula group by, y mediante la cláusual having no es posible mostrar el campo obtenido por sum().
SELECT ref_art, excrit, SUM(stock.cantidad) AS total FROM stock INNER JOIN articulo ON (articulo.id_art = stock.ref_art) GROUP BY ref_art, excrit HAVING (total > excrit) /* podría escribirlo así */ SELECT articulo.ref_art, articulo.excrit, SUM(stock.cantidad) AS total FROM stock INNER JOIN articulo ON (articulo.id_art = stock.ref_art) GROUP BY ref_art, excrit HAVING (total > excrit)
En este segundo caso, el procesador no reconoce el campo total. Probé nombrarlo con comillas y tampoco funcionó.
Estoy usando Firbird 2.5.2.
Solucioné el problema con otra sentencia sin usar el join (incluso con resultados mucho más satisfactorios), pero pregunto: ¿por qué no se puede ver el campo total?. El procesador lo ignora.
Saludos