MySQL utilizar suma y máximo para encontrar la más alta factura pagada

votos
-1

Estoy tratando de encontrar la manera de obtener el resultado MAX de una suma de los valores de una tabla con el fin de mostrar la cantidad pagada más alta de un recibo. También se supone que debo utilizar subselección, pero im confundirse. Hasta ahora esta consulta me consigue todo lo que necesito exhibidas excepto para el valor máximo. Esta es la tabla (factura + OD) es necesario utilizar esto es lo que estoy actualmente recibiendo Esto es lo que debería llegar

¿dónde puedo añadir MAX () (de la suma)?

SELECT invoicenumber invoice
     , invoicedate date
     , SUM(orderqty*ordersell) AS 'Invoice Total' 
  FROM invoice 
  JOIN orderdetail 
    ON invoice.invoiceid = orderdetail.invoiceid 
 GROUP 
    BY invoice ;
Publicado el 07/11/2018 a las 23:43
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
0

No sé si esto está cerca de lo que buscabas, pero creo que esto iba a funcionar (si he entendido bien lo que está tratando de lograr).

SELECT inv.invoicenumber,
       inv.invoice, 
       inv.invoicedate AS 'Date',
       MAX((SELECT ord.orderqty+ord.ordersell FROM DUAL)) AS 'Invoice Total' 
  FROM invoice inv
  JOIN orderdetail ord
    ON inv.invoice.invoiceid = ord.orderdetail.invoiceid 
 GROUP BY inv.invoice, 
          inv.invoice, 
          inv.invoicedate;
Respondida el 08/11/2018 a las 00:14
fuente por usuario

votos
0

Puede probar esto (la adición a la respuesta anterior):

SELECT invoicenumber AS invoice
 , invoicedate AS date
 , SUM(orderqty*ordersell) AS 'Invoice Total' 
FROM invoice 
JOIN orderdetail ON invoice.invoiceid = orderdetail.invoiceid 
GROUP BY invoicenumber,invoicedate ORDER BY `Invoice Total` DESC LIMIT 1;

no puede ser demasiado eficiente, pero devuelve el resultado más alto solamente.

Respondida el 08/11/2018 a las 00:08
fuente por usuario

votos
0

Si está utilizando SUMA o MAX en SELECT, es necesario GROUP BY otras columnas:

SELECT invoicenumber AS invoice
 , invoicedate AS date
 , SUM(orderqty*ordersell) AS 'Invoice Total' 
FROM invoice 
JOIN orderdetail ON invoice.invoiceid = orderdetail.invoiceid 
GROUP BY invoicenumber,invoicedate;
Respondida el 07/11/2018 a las 23:48
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more