
Restar valores de una suma con condición
Publicado por CarlosQ (52 intervenciones) el 16/01/2013 13:18:54
Hola maestros buenos días,
necesito su orientación y ayuda por favor, trato de restar dos valores que me entrega la siguiente query y como resultado arroja valores negativos e inmensos,
SELECT 'Stock' as item,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '01' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '01' THEN 1 END)) AS Ene,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '02' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '02' THEN 1 END)) AS Feb,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '03' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '03' THEN 1 END)) AS Mar,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '04' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '04' THEN 1 END)) AS Abr,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '05' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '05' THEN 1 END)) AS May,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '06' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '06' THEN 1 END)) AS Jun,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '07' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '07' THEN 1 END)) AS Jul,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '08' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '08' THEN 1 END)) AS Ago,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '09' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '09' THEN 1 END)) AS Sep,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '10' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '10' THEN 1 END)) AS Oct,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '11' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '11' THEN 1 END)) AS Nov,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '12' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '12' THEN 1 END)) AS Dic
,CONVERT(Varchar(10),getdate(),103) Fecha_Carga
FROM DESPACHOS_HIST a, F_BD b
para enero el valor del primer SUM CASE da 760 y el segundo 120 por lo tanto la resta me debería dar para enero 640 y lo que me esta arrojando es este valor -2307600. Utilizo sql server 2005. Tambien probe con CAST y da igual.
saludos y gracias,
necesito su orientación y ayuda por favor, trato de restar dos valores que me entrega la siguiente query y como resultado arroja valores negativos e inmensos,
SELECT 'Stock' as item,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '01' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '01' THEN 1 END)) AS Ene,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '02' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '02' THEN 1 END)) AS Feb,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '03' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '03' THEN 1 END)) AS Mar,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '04' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '04' THEN 1 END)) AS Abr,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '05' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '05' THEN 1 END)) AS May,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '06' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '06' THEN 1 END)) AS Jun,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '07' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '07' THEN 1 END)) AS Jul,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '08' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '08' THEN 1 END)) AS Ago,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '09' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '09' THEN 1 END)) AS Sep,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '10' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '10' THEN 1 END)) AS Oct,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '11' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '11' THEN 1 END)) AS Nov,
convert(int,SUM(CASE WHEN left(right(a.fecha,7),2) = '12' THEN 1 END))- convert(int,SUM(CASE WHEN left(RIGHT(b.fecha_desp_o,7),2) = '12' THEN 1 END)) AS Dic
,CONVERT(Varchar(10),getdate(),103) Fecha_Carga
FROM DESPACHOS_HIST a, F_BD b
para enero el valor del primer SUM CASE da 760 y el segundo 120 por lo tanto la resta me debería dar para enero 640 y lo que me esta arrojando es este valor -2307600. Utilizo sql server 2005. Tambien probe con CAST y da igual.
saludos y gracias,
Valora esta pregunta


0