Principales respuestas
Sumar datos de tabla y luego mostrar máximo en SQL

Pregunta
-
Buenas tardes, lo que quiero lograr hacer es sumar los datos cantidad de una tabla segun el codigo y luego mostrar, únicamente el de mayor cantidad, pude llegar hasta el punto de sumar las cantidades, el problema es que muestra todos los productos segun código.
Este es el codigo:
CREATE PROCEDURE ProductoMasVendido
AS
BEGIN
SELECT Productos.*, SUM(Cantidad) as Cantidad
FROM Productos, Venta
WHERE Productos.Codigo = Venta.Codigo
GROUP BY Productos.Nombre, Productos.Codigo, Productos.FechaVencimiento, Productos.Precio;
ENDesto devuelve:
Codigo Nombre FechaVencimiento Precio Cantidad
1 Arbeja 2016-11-05 00:00:00.000 75 1
2 Choclo 2016-11-05 00:00:00.000 125 7Como ven, esta devolviendo 2 distintos, vale destacar que en el de codigo 2, habian dos cantidades 4 y 3, al sumarlas dio 7, el tema es que quiero que aparezca solo el de 7, ya que fue el de mayor cantidad.
Respuestas
-
SELECT TOP 1 Productos.*, SUM(Cantidad) as Cantidad
FROM Productos, Venta
WHERE Productos.Codigo = Venta.Codigo
GROUP BY Productos.Nombre, Productos.Codigo, Productos.FechaVencimiento, Productos.PrecioORDER BY SUM(Cantidad) DESC
- Marcado como respuesta xTanKx lunes, 31 de octubre de 2016 15:57
Todas las respuestas
-
Ponle un "Select TOP 1" para que solo salga el primero, y al final un "Order By Cantidad DESC" para que ordena de mayor a menor, con lo que ese único primer registro será el que tenga la mayor cantidad.
- Propuesto como respuesta Miguel Egea GómezMVP, Moderator lunes, 31 de octubre de 2016 7:31
-
SELECT TOP 1 Productos.*, SUM(Cantidad) as Cantidad
FROM Productos, Venta
WHERE Productos.Codigo = Venta.Codigo
GROUP BY Productos.Nombre, Productos.Codigo, Productos.FechaVencimiento, Productos.PrecioORDER BY SUM(Cantidad) DESC
- Marcado como respuesta xTanKx lunes, 31 de octubre de 2016 15:57
-
Ademas, si deseas ver todos las filas que empatan como mayor entonces adiciona WITH TIES a la sub-clausula TOP.
SELECT TOP (1) WITH TIES col1,...
ORDER BY SUM(Venta.Cantidad) DESC;Si estas interesado en solo una fila, entonces puedes adicionar otra columna(s) para romper los empates y que la sentencia sea deterministica (retorne mismo resultado si se ejecuta con la misma data).
SELECT TOP (1) ...
ORDER BY SUM(Venta.Cantidad) DESC, Productos.Codigo ASC;Te aconsejo que uses el nombre de la tabla o alias para referenciar cada columna en la sentencia. De esta forma el query es mas legible y no tendremos que adivinar de que tabla proviene cada columna referenciada. Tambien que uses el esquema de las tablas para referenciarlas.
AMB
Some guidelines for posting questions...
AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas
- Editado HunchbackMVP lunes, 31 de octubre de 2016 12:55
-