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