Traer Máximo y Mínimo de una Suma SQL

Necesito traer los máximos y mínimos del campo Cantidad (que le puse de nombre cantidadvendida). Esto se utiliza en SQL Server 2000.
Yo lo había armado así:
Código:
select ven.Cod_Art as art, SUM(Ven.Cantidad) as CantidadVendida, VEN.idSucursal
from CUEventas VEN
group by ven.cod_art, VEN.idsucursal
having ( (max (SUM(Ven.Cantidad)) - (min (SUM(Ven.Cantidad)) ) >= 5
No puede andar, ya que en el having no esta de todo bien. Yo quiero agarrar el valor más grande del VEN. Cantidad (que es una suma de varios registros, como se ve en el select) y el más pequeño, restarlos ambos y esa diferencia (en este caso 5) me tendría que traer la consulta.
Pero luego me di cuenta que no sirve un SUM y MAX juntos y lo mismo con SUM y MIN.
La query que te mande es simplificada, en verdad es más densa, pero te mando la simple para que veas donde me falla el having, te copio aquí abajo la query original para ver si me puedes dar una mano.
Código:
CREATE proc RankingStock
@FDas DATETIME,
@FHas DATETIME,
@SucursalDesdeas int,
@SucursalHastaas int,
@Rubroas varchar(3),
@Itemas varchar(6),
@Diferenciaas money
AS
while len(@Rubro) < 3
begin
set @Rubro = '0' + @Rubro
end
while len(@Item) < 6
begin
set @Item = '0' + @Item
end
Print @FD
Print @FH
select Articulo, Nombre, MAX(Cantidadvendida), MIN(Cantidadvendida)
From
(
SELECT VEN.Cod_Art AS Articulo, isnull(ART.descItem, '- Articulo no cargado -') AS Descripcion, SUC.Nombre,
SUM(VEN. Cantidad) AS CantidadVendida, max(INV. Cantidad) as CantidadStock, max(VEN.PrecioUnitario) as Precio
FROM CueVentas VEN LEFT JOIN
(SELECT descItem, Cod_Art
FROM vw_Items
GROUP BY descItem, Cod_Art) ART ON VEN.Cod_Art = ART.Cod_Art COLLATE SQL_Latin1_General_CP1_CI_AS
INNER JOIN Inventario INV ON VEN.Cod_Art = INV.CodArt
INNER JOIN Sucursales SUC ON VEN.idSucursal = SUC.idSucursal and INV.idSucursal = SUC.idSucursal
WHERE CONVERT(varchar, VEN.Fecha, 112) between CONVERT(varchar, isnull(@FD, VEN.Fecha), 112) and CONVERT(varchar, isnull(@FH, VEN.Fecha),112)
AND (VEN.idSucursal BETWEEN ISNULL(@SucursalDesde,VEN.idSucursal)
AND ISNULL(@SucursalHasta,VEN.idSucursal))
and VEN.Cod_Rubro = isnull(@Rubro , VEN.Cod_Rubro)
AND (VEN.Cod_Art = isnull(@Item,VEN.Cod_Art))
GROUP BY VEN.Cod_Art, ART.descItem, SUC.Nombre, CAST(cast(year(VEN.Fecha) as varchar) + '-' + cast(month(VEN.Fecha) as varchar) + '-01' AS datetime)
ORDER BY articulo DESC, Nombre
)
group by Articulo, Nombre
having ( MAX(CantidadVendida) - MIN(CantidadVendida) )>=@Diferencia
GO

1 respuesta

Respuesta
-1
No entiendo muy bien tu pregunta, pero mira cuando pones Sum(COLUMNA) esta suma toda la columna así que poner max de un dato no sirve de nada. Ejemplo
Col1
-----
1
2
3
Select sum(col1)  >>> va a ser = a 6, no puedes sacra max de un solo numero.
Ahora creo (espero) que quieres sacar la lista de tus productos vendidos por sucursal que la diferencia de las ventas entre su máximo y mínimo sea mayor igual que 5.
¿Algo así?
Te pediria si porfavor podrias poner una imagen de las tablas q quires el query para sacartelo, si es asi como imagino, no es dificil, pero mejor si veo las tablas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas