Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] create procedure

Estas en el tema de create procedure en el foro de SQL Server en Foros del Web. create procedure TotalRecaudadoPorProducto @FechaInicio datetime, @FechaFinal datetime, @CodigoProducto int as begin select FECHA_VENTA,CODIGOPRODUCTO,CUANTOS from VENTAS,VENDIDO where FECHA_VENTA >= @FechaInicio and FECHA_VENTA <= @FechaFinal and VENTAS.CODIGOVENTA ...
  #1 (permalink)  
Antiguo 26/10/2016, 19:42
 
Fecha de Ingreso: mayo-2013
Mensajes: 14
Antigüedad: 3 años, 8 meses
Puntos: 0
create procedure

create procedure TotalRecaudadoPorProducto
@FechaInicio datetime,
@FechaFinal datetime,
@CodigoProducto int

as
begin

select FECHA_VENTA,CODIGOPRODUCTO,CUANTOS from VENTAS,VENDIDO where
FECHA_VENTA >= @FechaInicio and
FECHA_VENTA <= @FechaFinal and
VENTAS.CODIGOVENTA = VENDIDO.CODIGOVENTA and
CODIGOPRODUCTO = @CodigoProducto
group by CUANTOS


end


eso me devuelvo mas o menos lo que quiero que es todos los productos entre determinada fecha con ese codigo de producto, ahora los queria agrupar por cuantos o por codigoproducto, asi me devolvia el total recaudado pero me da error denuevo disculpen la molestias!!

este es el error
Msg 8120, Level 16, State 1, Procedure TotalRecaudadoPorProducto, Line 23
Column 'VENTAS.FECHA_VENTA' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
si comento el group by si funciona pero no muestra el resultado como quiero

Última edición por Ocharlo14; 26/10/2016 a las 19:45 Razón: falto informacion
  #2 (permalink)  
Antiguo 27/10/2016, 09:15
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 6.813
Antigüedad: 10 años, 6 meses
Puntos: 688
Respuesta: create procedure

una regla del group by es que todas las columnas que no usan una funciona de agrupado(sum, max, min, avg, count) deben de estar en el where, otra cosa porque estas usando join explicitos? mejor usa join implicitos da mejor performance ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 27/10/2016, 10:17
 
Fecha de Ingreso: mayo-2013
Mensajes: 14
Antigüedad: 3 años, 8 meses
Puntos: 0
Respuesta: create procedure

si gracias ya lo solucione de la siguiente manera


create procedure TotalRecaudadoPorProducto
@FechaInicio datetime,
@FechaFinal datetime,
@CodigoProducto int
as

select P.Nombre AS PRODUCTO, sum(P.Precio * VE.CUANTOS) AS TOTAL
from PRODUCTOS P, VENTAS V, VENDIDO VE
where P.CODIGO = @CodigoProducto
and VE.CODIGOPRODUCTO = @CodigoProducto
and VE.CODIGOVENTA = V.CODIGOVENTA
and V.FECHA_VENTA between @FechaInicio and @FechaFinal
group by P.Nombre

go



La zona horaria es GMT -6. Ahora son las 10:57.