SQL - Cursores SQL 2 tablas

 
Vista:
sin imagen de perfil

Cursores SQL 2 tablas

Publicado por Franco (1 intervención) el 31/07/2014 19:02:35
Necesito su ayuda por favor y les agradezco de antemano

tengo 2 tablas
____________
Cliente |
id
nombre
fechadenac



la otra es

____________
Pedido |
Id
Fechaped
descuento
idcliente



quiero un cursor que todos los cliente que tengan mas de un pedido en el mes tienen un descuento de 5% de total.

ayuda con este cursor por favor trato de hacerlo y no puedo

esto es lo que trate de hacer


create procedure SPrecorreractualizardescuentoparametro
@NroMes Integer
as
declare @idcliente codigo,
@fechapedido datetime

declare CursorCliente1 cursor for
select c.id, p.fechapedido from Cliente c left join Pedido p on c.id= p.idcliente
open CursorCliente1
fetch next from CursorCliente1 into @idcliente, @fechapedido
while (@@FETCH_STATUS = 0 )
begin
--if (@fechapedido is null )
-- update Cliente set Estado= 3 where id=@idcliente
--else
if (MONTH(@fechapedido)=@NroMes)
Update Pedido set Descuento= 5 where idcliente=@idcliente
fetch next from CursorCliente1 into @idcliente, @fechapedido
end
close CursorCliente1
deallocate CursorCliente1



Ayudenme por favor lo mas antes que se pueda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Cursores SQL 2 tablas

Publicado por Isaias (1921 intervenciones) el 31/07/2014 20:10:16
¿Es SQL Server?, ¿Para que quieres un cursor?

CREATE PROCEDURE SPrecorreractualizardescuentoparametro
@NroMes Integer
AS
BEGIN
IF @NroMes NOT BETWEEN 1 AND 12
BEGIN
SELECT 'Error, El numero de mes no esta en un rango valido'
RETURN
END
UPDATE PEDIDO P1 SET P1.Descuento = 5
WHERE EXISTS (SELECT P2.id, COUNT(P2.id) FROM PEDIDO P2
WHERE P1.id = P2.id AND
DATEPART(MM, fechapedido) = @NroMes
GROUP BY P2.id
HAVING COUNT(P2.id) > 1)
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar