Estoy elaborando un procedimiento almacenado la parte que me falla es el siguiente:
Código:
Muestro el código con el fin de que haya una idea, no se puede entender fácilmente sin conocer la magnitud de esa Base de datos, el punto es que esa parte me genera esto:--Se crea el cursor que recorre los detalles e inserta en la tabla de facturas_afiliados declare cur_facturacion cursor for select f.codigo_suscriptor, f.codigo_sucursal, f.num_factura, convert(varchar(10),f.fecha_actualizacion,120) as fecha_actualizacion, --Este pedazo decide si es cuota unica o cuota fija case --Si es cuota unica when (select isnull(cuota_unica,0) from ea_carpeta c where c.codigo_suscriptor = f.codigo_suscriptor ) <> 0 --Entonces Se coloca cuota unica then (select isnull(cuota_unica,0) from ea_carpeta c where c.codigo_suscriptor = f.codigo_suscriptor) --Si es cuota fija o sea consumo minimo y es mayor a lo consumido when (select isnull(cuota_minima,0) from acr_suscriptores c where c.codigo_suscriptor = f.codigo_suscriptor ) > sum(f.valor) --Entonces se coloca la cuota minima obligatoria then (select isnull(cuota_minima,0) from acr_suscriptores c where c.codigo_suscriptor = f.codigo_suscriptor) --De lo contrario, simplemente se coloca lo consumido else sum(f.valor) end as valor_factura, f.usuario_actualizacion from ea_detalles_facturas f where f.fecha_actualizacion = @fecha_factura group by f.codigo_suscriptor, f.codigo_sucursal, f.num_factura, f.fecha_actualizacion, f.usuario_actualizacion open cur_facturacion fetch cur_facturacion into @codigo_suscriptor, @codigo_sucursal, @num_factura, @fecha_factura, @valor_factura, @usuario_factura --Empieza el loop del cursor while @@fetch_status = 0 begin insert into ea_facturas_afiliados (codigo_suscriptor, codigo_sucursal, num_factura, fecha_factura, valor_factura, codigo_estado, observacion_factura, concepto_factura, usuario_factura) values (@codigo_suscriptor, @codigo_sucursal, @num_factura, @fecha_factura, @valor_factura, '1', 'FACTURACION DEL '+@fecha_inicio+' AL '+@fecha_final, 'FACTURA DEL '+@fecha_inicio+' AL '+@fecha_final, @usuario_factura) fetch cur_facturacion into @codigo_suscriptor, @codigo_sucursal, @num_factura, @fecha_factura, @valor_factura, @usuario_factura end
Si ven la fila que tengo seleccionada en la columna valor_factura registra 800.000
Pero, si yo ejecuto solo el select que contiene el código anterior sin poner a correr el cursor e insertar en la tabla, sale esto:
y ahí en la columna valor_factura es 400.000 y así es como debe ser...
Cuando se hace la inserción con el cursor es cuando se duplica el valor, pero no veo por donde, no tiene lógica, si alguien entiende y puede ayudarme se lo agradecería...