create procedure relacionpedidoscliente4
as 
  declare @codcliente char(10),@nomcliente varchar(20),@codpedido char (10),@fechapedido datetime
  declare @codprod char (10),@nomprod varchar (20),@cant decimal(9,2),
          @precio  decimal (7,2),@importe  decimal (7,2),@totcliente  decimal (7,2),@totpedido decimal(9,2), 
	  @TotGeneral decimal(9,2)
DECLARE cur_cliente
    cursor for select customerid,companyname
               from customers
 	       order by companyname

open cur_cliente
print space(20)+"Listado de pedidos por cliente"
print space(20)+replicate("-",30)
fetch next from cur_cliente
      into @codcliente ,@nomcliente 

SELECT @TotGeneral=0.0
while @@fetch_status=0
  begin
    PRINT ''	
    print "cliente:"+@codcliente+@nomcliente 
    declare cur_pedido
	cursor for
	select orderid,orderdate
		from orders
		where customerid = @codcliente
	open cur_pedido
	fetch next from cur_pedido
		into @codpedido ,@fechapedido
	SELECT @TotCliente=0.0
 	while @@fetch_status=0
	  begin
	   print "pedido N°:"+@codpedido+space(10)+"fecha:"+CONVERT(CHAR(10),@fechapedido,21)
	   declare cur_producto cursor for
		select p.productid,p.productname,od.quantity,od.unitprice,od.quantity*od.unitprice
		       FROM Products p INNER JOIN [Order Details] od
		       ON p.ProductId=od.ProductId
		       where od.orderid=@codpedido
	OPEN cur_producto
	FETCH NEXT FROM  cur_producto 
			   INTO @codprod,@nomprod,@cant,@precio,@importe
	PRINT SPACE(6)+'Còdigo   Descripciòn del producto         Cantidad    Precio    Importe'
	PRINT REPLICATE('-',70)
	SELECT @TotPedido=0.0
	WHILE @@fetch_status=0
	     BEGIN
		PRINT SPACE(6)+@codprod+'  '+LEFT(@nomprod+SPACE(35),35)  +'  '+STR(@cant,7,2)+'   '+ STR(@precio,7,2)+ '   ' +STR(@importe,7,2)
		FETCH NEXT FROM  cur_producto 
		     INTO @codprod,@nomprod,@cant,@precio,@importe
		SELECT @TotPedido=@TotPedido+@importe
	     END
	PRINT SPACE(6)+REPLICATE('-',20)	
	PRINT SPACE(6)+'Total del pedido :S/.'+ STR(@TotPedido,9,2)
	SELECT @TotCliente=@TotCliente+@TotPedido
	CLOSE cur_producto
	DEALLOCATE cur_producto
	FETCH NEXT FROM cur_pedido
		INTO @codpedido ,@fechapedido
     END
     PRINT REPLICATE('-',20)	
     PRINT 'Total del CLIENTE :S/.'+ STR(@TotCliente,9,2)

   CLOSE cur_pedido	
   DEALLOCATE cur_pedido	
   fetch next from cur_cliente
         into @codcliente ,@nomcliente 
   SELECT @TotGeneral=@TotGeneral+@TotCliente
 END
CLOSE cur_cliente
DEALLOCATE cur_cliente







    Source: geocities.com/es/hwfiestasb/ETS

               ( geocities.com/es/hwfiestasb)                   ( geocities.com/es)