Ver Mensaje Individual
  #8  
Antiguo 12-10-2011
abelg abelg is offline
Miembro
 
Registrado: jul 2004
Posts: 50
Reputación: 20
abelg Va por buen camino
Hola, bueno aqui te posteo una solución espero te ayude.

Código SQL [-]
declare @TipoFac varchar(10),
  @NumeroP varchar(20),
  @Nombre varchar(100),
  @TipoCli varchar(50),
  @NumeroReal varchar(15),
  @Monto money,
  -- Para agrupar
  @Grupo int,
  @Nombreanterior varchar(100)
  

Create table #Factura  -- Esta Tabla es una representación de tu tabla real no es necesario crearla
(
  TipoFac varchar(10),
  NumeroP varchar(20),
  Nombre varchar(100),
  TipoCli varchar(50),
  NumeroF varchar(30),
  NumeroReal varchar(15),
  Monto money,
)

Create table #FacturaTmp -- Esta tabla la creas como esta
(
  TipoFac varchar(10),
  NumeroP varchar(20),
  Nombre varchar(100),
  TipoCli varchar(50),
  NumeroReal varchar(15),
  Monto money,
  Grupo int
)

insert into #Factura values('A', 'Z4A8086521', 'COPESIRA, C.A',  'Contibuyente', '00040263', '00040263',   173.400)
insert into #Factura values('A', 'Z4A8086521', 'UNIDAD EDUCATIVA FERMIN TORO', 'Contibuyente', '00040264', '00040264',   338.000)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040265 - 00040265','00040265',   267.340)
insert into #Factura values('A', 'Z4A8086521', 'ASOC. COOP. AMBARCA R.L', 'Contibuyente', '00040266', '00040266',   601.450)
insert into #Factura values('A', 'Z4A8086521', 'CONSEJO COMUNAL CRUZ PERAZA I', 'Contibuyente', '00040267', '00040267',   69.360)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040268 - 00040268','00040268',   213.740)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040269 - 00040269','00040269',   1597.400)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040270 - 00040270','00040270',   4.880)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040271 - 00040271','00040271',   97.530)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040272 - 00040272','00040272',   24.930)

declare FaturaCur Cursor For
Select TipoFac,
         NumeroP,
         Nombre,
         TipoCli,
         NumeroReal,
         Monto
from #Factura
order by NumeroReal

open FaturaCur
fetch next from FaturaCur into @Tipofac, @NumeroP, @Nombre, @TipoCli, @NumeroReal, @Monto
set @Nombreanterior = @Nombre
set @Grupo = 1

while @@FETCH_STATUS = 0 
begin
   if (@Nombreanterior <> @Nombre)
   begin
      set @Grupo = @Grupo + 1
      set @Nombreanterior = @Nombre
   end        
   insert into #FacturaTmp values (@Tipofac, @NumeroP, @Nombre, @TipoCli, @NumeroReal, @Monto, @Grupo)
   fetch next from FaturaCur into @Tipofac, @NumeroP, @Nombre, @TipoCli, @NumeroReal, @Monto                
end

close FaturaCur
deallocate FaturaCur

Select TipoFac,
         NumeroP,
         Nombre,
         TipoCli,
         CASE When MIN(NumeroReal) <> MAX(numeroReal) 
             then  MIN(NumeroReal) +    '-' + MAX(numeroReal) 
             else MIN(NumeroReal) end NumeroFactura,
         SUM(Monto) Monto
from #FacturaTmp
Group by TipoFac,
        NumeroP,
        Nombre,
        TipoCli,
        Grupo
order by
        CASE When MIN(NumeroReal) <> MAX(numeroReal) 
           then  MIN(NumeroReal) +    '-' + MAX(numeroReal)
           else MIN(NumeroReal) end


Drop table #Factura
Drop table #Facturatmp
Mira que estoy creando dos tablas temporales una es para poder simular tu tabla real la otra la uso si para la solución.
salu2

Última edición por abelg fecha: 12-10-2011 a las 16:08:03.
Responder Con Cita