
valores NULL en resultado pivot
Publicado por CarlosQ (52 intervenciones) el 09/05/2012 21:37:26
Estimados
tengo la siguiente consulta y al final me entrega valores NULL por lo que no me agrupa al sumar, como convierto esos valores NULL a cero intente con isnull me mostro el mismo resultado,
DECLARE @TableMes AS TABLE([Mes] INT NOT NULL)
DECLARE @Mes INT, @MesesPVT NVARCHAR(MAX)
INSERT INTO @TableMes
SELECT DISTINCT Mes AS [Mes]
FROM FRD_TRAFICO_ARREGLO
SET @Mes = (SELECT MIN([Mes]) FROM @TableMes)
SET @MesesPVT=N''
WHILE @Mes IS NOT NULL
BEGIN
SET @MesesPVT = @MesesPVT + N',['+ CONVERT(NVARCHAR(10),@Mes) + N']'
SET @Mes = (SELECT MIN([Mes]) FROM @TableMes WHERE [Mes]>@Mes)
END
SET @MesesPVT = SUBSTRING(@MesesPVT,2,LEN(@MesesPVT))
PRINT @MesesPVT
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = N'SELECT distinct *
FROM (
SELECT distinct
pagador,ld,mes,carrier,cia,tipo_doc
,sum(isnull(cuentas,0)) cuentas
,sum(isnull(montos,0)) montos
,sum(isnull(dias,0)) dias
,sum(isnull(reclamos,0)) reclamos
,sum(isnull(seg,0)) seg
,sum(isnull(t_valor,0)) t_valor
FROM TRAFICO_ARREGLO
group by pagador,ld,mes,carrier,cia,tipo_doc
) pvt
PIVOT (sum(t_valor) FOR [Mes] IN (' + @MesesPVT + ')) AS Child
ORDER by pagador'
EXECUTE sp_executesql @SQL
*el telefono 002040042y deberia mostrar solo una linea pero no puede sumar por los valores NULL
pagador|ld|carrier|cia|tipo_doc|cuentas|montos|dias|reclamos|seg|1|2|3|4
002040042x|LDN|87|TCU|F|9|33942|722|0|167|663|NULL|NULL|NULL
002040042y|LDN|87|TCU|F|0|-780337|0|0|8524|NULL|NULL|NULL|29277
002040042y|LDN|87|TCU|F|0|-780337|0|0|32456|126093|NULL|NULL|NULL
002040042y|LDN|87|TCU|F|0|-780337|0|0|38697|NULL|NULL|150787|NULL
002040042y|LDN|87|TCU|F|0|-780337|0|0|22941|NULL|90235|NULL|NULL
002040047t|LDN|87|TCU|F|0|-58699|0|0|233|1020|NULL|NULL|NULL
Por favor su ayuda
saludos y gracias.
tengo la siguiente consulta y al final me entrega valores NULL por lo que no me agrupa al sumar, como convierto esos valores NULL a cero intente con isnull me mostro el mismo resultado,
DECLARE @TableMes AS TABLE([Mes] INT NOT NULL)
DECLARE @Mes INT, @MesesPVT NVARCHAR(MAX)
INSERT INTO @TableMes
SELECT DISTINCT Mes AS [Mes]
FROM FRD_TRAFICO_ARREGLO
SET @Mes = (SELECT MIN([Mes]) FROM @TableMes)
SET @MesesPVT=N''
WHILE @Mes IS NOT NULL
BEGIN
SET @MesesPVT = @MesesPVT + N',['+ CONVERT(NVARCHAR(10),@Mes) + N']'
SET @Mes = (SELECT MIN([Mes]) FROM @TableMes WHERE [Mes]>@Mes)
END
SET @MesesPVT = SUBSTRING(@MesesPVT,2,LEN(@MesesPVT))
PRINT @MesesPVT
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = N'SELECT distinct *
FROM (
SELECT distinct
pagador,ld,mes,carrier,cia,tipo_doc
,sum(isnull(cuentas,0)) cuentas
,sum(isnull(montos,0)) montos
,sum(isnull(dias,0)) dias
,sum(isnull(reclamos,0)) reclamos
,sum(isnull(seg,0)) seg
,sum(isnull(t_valor,0)) t_valor
FROM TRAFICO_ARREGLO
group by pagador,ld,mes,carrier,cia,tipo_doc
) pvt
PIVOT (sum(t_valor) FOR [Mes] IN (' + @MesesPVT + ')) AS Child
ORDER by pagador'
EXECUTE sp_executesql @SQL
*el telefono 002040042y deberia mostrar solo una linea pero no puede sumar por los valores NULL
pagador|ld|carrier|cia|tipo_doc|cuentas|montos|dias|reclamos|seg|1|2|3|4
002040042x|LDN|87|TCU|F|9|33942|722|0|167|663|NULL|NULL|NULL
002040042y|LDN|87|TCU|F|0|-780337|0|0|8524|NULL|NULL|NULL|29277
002040042y|LDN|87|TCU|F|0|-780337|0|0|32456|126093|NULL|NULL|NULL
002040042y|LDN|87|TCU|F|0|-780337|0|0|38697|NULL|NULL|150787|NULL
002040042y|LDN|87|TCU|F|0|-780337|0|0|22941|NULL|90235|NULL|NULL
002040047t|LDN|87|TCU|F|0|-58699|0|0|233|1020|NULL|NULL|NULL
Por favor su ayuda
saludos y gracias.
Valora esta pregunta


0