De momento estoy generando un SP el cual me debe arrojar datos a modo de alimentacion de un reporte, esto me funciona perfectamente, salvo por un pequeño problema.
El SP es el siguiente:
Código:
Los datos son arrojados correctamente al momento de generar la siguiente consulta desde la aplicación:
CREATE PROCEDURE [dbo].[VCPP_PAPEL_CLIENTE]
@ANIO1 int,
@ANIO2 int,
@PAPEL CHAR(1),
@CLIENTE varchar(80)
AS
declare @TIPO CHAR(3), @FAC_Num int, @FAC_CodCliente nvarchar(50), @CL_razonSocial nvarchar(50), @FAC_FechaEmision datetime, @FAC_TotalNeto int, @NC_TotalNeto int
CREATE TABLE #VentasNetasMes (FAC_Num INT,
FAC_FechaEmision datetime,
FAC_TotalNeto int)
DECLARE C_facturas CURSOR FOR
select 'FAC' ,
FAC_Num,
FAC_FechaEmision,
FAC_TotalNeto = isnull((select sum(isnull(ITFAC_Neto, 0)) from [FACTURA ITEM] where FAC_Num = ITFAC_Num),0)
-- ISNULL(FAC_TotalNeto,0)
from [factura]
where FAC_FechaEmision is not null AND EXISTS(SELECT * FROM [FACTURA ITEM],[ORDEN DE TRABAJO ITEM]
WHERE FAC_NUM = ITFAC_NUM AND ITFAC_NUMOT = OTD_NUM AND ITFAC_IDDETALLE = OTD_IDDETALLE AND OTD_PAPEL = @PAPEL)
AND YEAR(FAC_FechaEmision) between @ANIO1 and @ANIO2
AND FAC_CodCliente = @CLIENTE
UNION ALL
select 'NC',
NC_Num,
NC_FechaEmision,
NC_TotalNeto = isnull((select sum(isnull(NCIT_Neto, 0)) from [NOTA CREDITO ITEM] Where NC_Num = NCIT_Num ),0)
-- ISNULL(NC_TotalNeto,0)
from [NOTA CREDITO]
where NC_FechaEmision is not null AND EXISTS(SELECT * FROM [NOTA CREDITO ITEM],[ORDEN DE TRABAJO ITEM] WHERE NC_NUM = NCIT_NUM AND NCIT_NUMOT = OTD_NUM AND NCIT_IDDETALLE = OTD_IDDETALLE AND OTD_PAPEL = @PAPEL)
AND YEAR(NC_FechaEmision) between @ANIO1 and @ANIO2
AND NC_CodCliente = @CLIENTE
OPEN C_facturas
FETCH NEXT FROM C_facturas
INTO @TIPO, @FAC_Num , @FAC_FechaEmision, @FAC_TotalNeto
WHILE @@FETCH_STATUS = 0
BEGIN
IF @TIPO = 'NC'
SELECT @FAC_TotalNeto = @FAC_TotalNeto *(-1)
INSERT INTO #VentasNetasMes (FAC_Num, FAC_FechaEmision, FAC_TotalNeto)VALUES(@FAC_Num, @FAC_FechaEmision, @FAC_TotalNeto)
FETCH NEXT FROM C_facturas
INTO @TIPO, @FAC_Num , @FAC_FechaEmision, @FAC_TotalNeto
END
CLOSE C_facturas
DEALLOCATE C_facturas
select ano=datepart(yyyy, FAC_FechaEmision),
mes=datepart(mm, FAC_FechaEmision),
total = sum(FAC_TotalNeto)
from #VentasNetasMes
group by datepart(yyyy, FAC_FechaEmision), datepart(mm, FAC_FechaEmision)
order by 1,2
GO
Código:
El SP lo trabajo con cursores. Necesito averiguar la forma de que cuando no existan datos en un determinado periodo me arroje como valor 0. Exec VCPP_PAPEL_CLIENTE '2010', '2011', 'R', '96861750-8'
Pues como aun no soluciono esto me genera un reporte incompleto debido a que falta lo que indiqué anteriormente.
Agradezco cualquier ayuda de uds.
Saludos.


