![]() |
| |||
| Hola a todos y gracias de antemano. a ver si me pueden ayudar con esto. Tengo un SP en SQL que es este ALTER PROCEDURE [dbo].[SGI_Saldo_Mov] ( ***desde smalldatetime, ***CtaBanc int ) AS SELECT SUM(dbo.Detalle_Movimiento.Debe)- SUM(dbo.Detalle_Movimiento.Haber) AS Saldo, dbo.CtaBanco.Saldo AS SaldoC FROM dbo.CtaBanco INNER JOIN dbo.Movimientos ON dbo.CtaBanco.IdCtaBanco = dbo.Movimientos.IdCtaBanco INNER JOIN dbo.Detalle_Movimiento ON dbo.Movimientos.IdMov = dbo.Detalle_Movimiento.IdMov WHERE (dbo.Movimientos.IdCtaBanco = ***CtaBanc) AND (dbo.Detalle_Movimiento.Fecha < ***desde) GROUP BY dbo.CtaBanco.Saldo Lo que necesito es que si las sumas de arriba son nulas, igualarlas a cero, o sea, no tener valores nulos Gracias |
| | ||||
| ||||
| |
| |||
| "Super" <someone***somewhere.com> escribió en el mensaje news:%23HU%23C4rYIHA.4808***TK2MSFTNGP05.phx.gbl... > Hola a todos y gracias de antemano. > > a ver si me pueden ayudar con esto. > > Tengo un SP en SQL que es este > > ALTER PROCEDURE [dbo].[SGI_Saldo_Mov] > > ( > > ***desde smalldatetime, > > ***CtaBanc int > > ) > > AS > > SELECT SUM(dbo.Detalle_Movimiento.Debe)- SUM(dbo.Detalle_Movimiento.Haber) > AS Saldo, dbo.CtaBanco.Saldo AS SaldoC > > FROM dbo.CtaBanco INNER JOIN > > dbo.Movimientos ON dbo.CtaBanco.IdCtaBanco = dbo.Movimientos.IdCtaBanco > INNER JOIN > > dbo.Detalle_Movimiento ON dbo.Movimientos.IdMov = > dbo.Detalle_Movimiento.IdMov > > WHERE (dbo.Movimientos.IdCtaBanco = ***CtaBanc) AND > (dbo.Detalle_Movimiento.Fecha < ***desde) > > GROUP BY dbo.CtaBanco.Saldo > > > > Lo que necesito es que si las sumas de arriba son nulas, igualarlas a > cero, o sea, no tener valores nulos Hola. Prueba con COALESCE. Debe ser algo como: ... SELECT COALESCE(SUM(dbo.Detalle_Movimiento.Debe), 0) - COALESCE(SUM(dbo.Detalle_Movimiento.Haber), 0) FROM ... Salud! |
| |||
| Continua devolviendo valores nulos cuando no hay movimientos, alguna otra idea ? Gracias por su pronta respuesta. SELECT COALESCE(SUM(dbo.Detalle_Movimiento.Debe),0)- COALESCE(SUM(dbo.Detalle_Movimiento.Haber),0) AS Saldo, dbo.CtaBanco.Saldo AS SaldoC FROM dbo.CtaBanco INNER JOIN dbo.Movimientos ON dbo.CtaBanco.IdCtaBanco = dbo.Movimientos.IdCtaBanco INNER JOIN dbo.Detalle_Movimiento ON dbo.Movimientos.IdMov = dbo.Detalle_Movimiento.IdMov WHERE (dbo.Movimientos.IdCtaBanco = ***CtaBanc) AND (dbo.Detalle_Movimiento.Fecha < ***desde) GROUP BY dbo.CtaBanco.Saldo |
| |||
| Debes usar ISNULL SELECT SUM(ISNULL(dbo.Detalle_Movimiento.Debe, 0))- SUM(ISNULL(dbo.Detalle_Movimiento.Haber,0)) -- Saludos, Jhonny Vargas P. http://msmvps.com/jvargas Santiago de Chile "Super" <someone***somewhere.com> escribió en el mensaje de noticias:#HU#C4rYIHA.4808***TK2MSFTNGP05.phx.gbl... > Hola a todos y gracias de antemano. > > a ver si me pueden ayudar con esto. > > Tengo un SP en SQL que es este > > ALTER PROCEDURE [dbo].[SGI_Saldo_Mov] > > ( > > ***desde smalldatetime, > > ***CtaBanc int > > ) > > AS > > SELECT SUM(dbo.Detalle_Movimiento.Debe)- SUM(dbo.Detalle_Movimiento.Haber) > AS Saldo, dbo.CtaBanco.Saldo AS SaldoC > > FROM dbo.CtaBanco INNER JOIN > > dbo.Movimientos ON dbo.CtaBanco.IdCtaBanco = dbo.Movimientos.IdCtaBanco > INNER JOIN > > dbo.Detalle_Movimiento ON dbo.Movimientos.IdMov = > dbo.Detalle_Movimiento.IdMov > > WHERE (dbo.Movimientos.IdCtaBanco = ***CtaBanc) AND > (dbo.Detalle_Movimiento.Fecha < ***desde) > > GROUP BY dbo.CtaBanco.Saldo > > > > Lo que necesito es que si las sumas de arriba son nulas, igualarlas a > cero, o sea, no tener valores nulos > > > > Gracias > > |
| |||
| "Jhonny Vargas P." <c_h_a_n_g_e_sREMOVE***hotmail.com> wrote in message news:%23uohuV2YIHA.484***TK2MSFTNGP06.phx.gbl... > Debes usar ISNULL > > > SELECT SUM(ISNULL(dbo.Detalle_Movimiento.Debe, 0))- > SUM(ISNULL(dbo.Detalle_Movimiento.Haber,0)) Esto todavía devolverá NULL si no existe ningún registro en la tabla. Hay que poner un ISNULL por fuera de toda la operación. |
| |||
| Entoces piensa en colocar un ISNULL a la Suma. SELECT ISNULL(SUM(ISNULL(dbo.Detalle_Movimiento.Debe, 0)),0)- ISNULL(SUM(ISNULL(dbo.Detalle_Movimiento.Haber,0)) ,0) -- Saludos, Jhonny Vargas P. http://msmvps.com/jvargas Santiago de Chile "Alberto Poblacion" <earthling-quitaestoparacontestar***poblacion.org> escribió en el mensaje de noticias:eMPyvb2YIHA.748***TK2MSFTNGP04.phx.gbl... > "Jhonny Vargas P." <c_h_a_n_g_e_sREMOVE***hotmail.com> wrote in message > news:%23uohuV2YIHA.484***TK2MSFTNGP06.phx.gbl... >> Debes usar ISNULL >> >> >> SELECT SUM(ISNULL(dbo.Detalle_Movimiento.Debe, 0))- >> SUM(ISNULL(dbo.Detalle_Movimiento.Haber,0)) > > Esto todavía devolverá NULL si no existe ningún registro en la tabla. > Hay que poner un ISNULL por fuera de toda la operación. > > > > > |
| |||
| Gracias por su pronta respuesta, pero aún me pone en nulo los valores que le pido cuando no encuentra mivimientos en la fecha anterior a la que le doy. Alguna otra idea ? "Jhonny Vargas P." <c_h_a_n_g_e_sREMOVE***hotmail.com> escribió en el mensaje de noticias news:%23o2yrf2YIHA.5396***TK2MSFTNGP02.phx.gbl... > Entoces piensa en colocar un ISNULL a la Suma. > > SELECT ISNULL(SUM(ISNULL(dbo.Detalle_Movimiento.Debe, 0)),0)- > ISNULL(SUM(ISNULL(dbo.Detalle_Movimiento.Haber,0)) ,0) > > > > > -- > Saludos, > Jhonny Vargas P. > http://msmvps.com/jvargas > Santiago de Chile > > "Alberto Poblacion" <earthling-quitaestoparacontestar***poblacion.org> > escribió en el mensaje de noticias:eMPyvb2YIHA.748***TK2MSFTNGP04.phx.gbl... >> "Jhonny Vargas P." <c_h_a_n_g_e_sREMOVE***hotmail.com> wrote in message >> news:%23uohuV2YIHA.484***TK2MSFTNGP06.phx.gbl... >>> Debes usar ISNULL >>> >>> >>> SELECT SUM(ISNULL(dbo.Detalle_Movimiento.Debe, 0))- >>> SUM(ISNULL(dbo.Detalle_Movimiento.Haber,0)) >> >> Esto todavía devolverá NULL si no existe ningún registro en la tabla. >> Hay que poner un ISNULL por fuera de toda la operación. >> >> >> >> >> |
| |||
| Estás seguro?... Puede ser que no estés devolviendo ningun valor... hay alguna forma que mandes el resultado con los registros?.... ¿probaste la consulta directamente en el Query Analizer? -- Saludos, Jhonny Vargas P. http://msmvps.com/jvargas Santiago de Chile "Super" <calinlima02***hotmail.com> escribió en el mensaje de noticias:FEFED083-5928-4ED2-8DA7-53F5EACF2674***microsoft.com... > Gracias por su pronta respuesta, pero aún me pone en nulo los valores que > le pido cuando no encuentra mivimientos en la fecha anterior a la que le > doy. > > Alguna otra idea ? > > > "Jhonny Vargas P." <c_h_a_n_g_e_sREMOVE***hotmail.com> escribió en el > mensaje de noticias news:%23o2yrf2YIHA.5396***TK2MSFTNGP02.phx.gbl... >> Entoces piensa en colocar un ISNULL a la Suma. >> >> SELECT ISNULL(SUM(ISNULL(dbo.Detalle_Movimiento.Debe, 0)),0)- >> ISNULL(SUM(ISNULL(dbo.Detalle_Movimiento.Haber,0)) ,0) >> >> >> >> >> -- >> Saludos, >> Jhonny Vargas P. >> http://msmvps.com/jvargas >> Santiago de Chile >> >> "Alberto Poblacion" <earthling-quitaestoparacontestar***poblacion.org> >> escribió en el mensaje de >> noticias:eMPyvb2YIHA.748***TK2MSFTNGP04.phx.gbl... >>> "Jhonny Vargas P." <c_h_a_n_g_e_sREMOVE***hotmail.com> wrote in message >>> news:%23uohuV2YIHA.484***TK2MSFTNGP06.phx.gbl... >>>> Debes usar ISNULL >>>> >>>> >>>> SELECT SUM(ISNULL(dbo.Detalle_Movimiento.Debe, 0))- >>>> SUM(ISNULL(dbo.Detalle_Movimiento.Haber,0)) >>> >>> Esto todavía devolverá NULL si no existe ningún registro en la tabla. >>> Hay que poner un ISNULL por fuera de toda la operación. >>> >>> >>> >>> >>> > |
| |||
| Es porque no encontró nada la consulta... que es muy distinto a "devolver valores nulos"... Coloca al después del Select IF ******ROWCOUNT() = 0 SELECT Saldo = 0, SaldoC=0 -- Saludos, Jhonny Vargas P. http://msmvps.com/jvargas Santiago de Chile "Super" <calinlima02***hotmail.com> escribió en el mensaje de noticias:9C471BBF-ED2A-44B7-9E65-95F8A322F7B8***microsoft.com... > Aquí lo tienes, en una está una cuenta que tiene movimiento y otra que no > lo > tiene, que es donde no devuelve nada, tal vez y no sea nulo, si no que no > devuelve valor, pero igual no se como hacer para llevarlo a cero. > > Gracias > > "Jhonny Vargas P." <c_h_a_n_g_e_sREMOVE***hotmail.com> escribió en el > mensaje > de noticias news:%23z77XC3YIHA.4448***TK2MSFTNGP03.phx.gbl... >> Estás seguro?... >> >> Puede ser que no estés devolviendo ningun valor... >> >> hay alguna forma que mandes el resultado con los registros?.... ¿probaste >> la consulta directamente en el Query Analizer? >> >> >> >> -- >> Saludos, >> Jhonny Vargas P. >> http://msmvps.com/jvargas >> Santiago de Chile >> >> "Super" <calinlima02***hotmail.com> escribió en el mensaje de >> noticias:FEFED083-5928-4ED2-8DA7-53F5EACF2674***microsoft.com... >>> Gracias por su pronta respuesta, pero aún me pone en nulo los valores >>> que >>> le pido cuando no encuentra mivimientos en la fecha anterior a la que le >>> doy. >>> >>> Alguna otra idea ? >>> >>> >>> "Jhonny Vargas P." <c_h_a_n_g_e_sREMOVE***hotmail.com> escribió en el >>> mensaje de noticias news:%23o2yrf2YIHA.5396***TK2MSFTNGP02.phx.gbl... >>>> Entoces piensa en colocar un ISNULL a la Suma. >>>> >>>> SELECT ISNULL(SUM(ISNULL(dbo.Detalle_Movimiento.Debe, 0)),0)- >>>> ISNULL(SUM(ISNULL(dbo.Detalle_Movimiento.Haber,0)) ,0) >>>> >>>> >>>> >>>> >>>> -- >>>> Saludos, >>>> Jhonny Vargas P. >>>> http://msmvps.com/jvargas >>>> Santiago de Chile >>>> >>>> "Alberto Poblacion" <earthling-quitaestoparacontestar***poblacion.org> >>>> escribió en el mensaje de >>>> noticias:eMPyvb2YIHA.748***TK2MSFTNGP04.phx.gbl... >>>>> "Jhonny Vargas P." <c_h_a_n_g_e_sREMOVE***hotmail.com> wrote in message >>>>> news:%23uohuV2YIHA.484***TK2MSFTNGP06.phx.gbl... >>>>>> Debes usar ISNULL >>>>>> >>>>>> >>>>>> SELECT SUM(ISNULL(dbo.Detalle_Movimiento.Debe, 0))- >>>>>> SUM(ISNULL(dbo.Detalle_Movimiento.Haber,0)) >>>>> >>>>> Esto todavía devolverá NULL si no existe ningún registro en la >>>>> tabla. >>>>> Hay que poner un ISNULL por fuera de toda la operación. >>>>> >>>>> >>>>> >>>>> >>>>> >>> > |
| |||
| Disculpe mi ignorancia, puede decirme como lo pongo, realmente ni idea Gracias "Jhonny Vargas P." <c_h_a_n_g_e_sREMOVE***hotmail.com> escribió en el mensaje de noticias news:e$vk54$YIHA.1132***TK2MSFTNGP06.phx.gbl... > Es porque no encontró nada la consulta... que es muy distinto a "devolver > valores nulos"... > > Coloca al después del Select > > IF ******ROWCOUNT() = 0 > SELECT Saldo = 0, SaldoC=0 > > > > > -- > Saludos, > Jhonny Vargas P. > http://msmvps.com/jvargas > Santiago de Chile > > "Super" <calinlima02***hotmail.com> escribió en el mensaje de > noticias:9C471BBF-ED2A-44B7-9E65-95F8A322F7B8***microsoft.com... >> Aquí lo tienes, en una está una cuenta que tiene movimiento y otra que no >> lo >> tiene, que es donde no devuelve nada, tal vez y no sea nulo, si no que no >> devuelve valor, pero igual no se como hacer para llevarlo a cero. >> >> Gracias >> >> "Jhonny Vargas P." <c_h_a_n_g_e_sREMOVE***hotmail.com> escribió en el >> mensaje >> de noticias news:%23z77XC3YIHA.4448***TK2MSFTNGP03.phx.gbl... >>> Estás seguro?... >>> >>> Puede ser que no estés devolviendo ningun valor... >>> >>> hay alguna forma que mandes el resultado con los registros?.... >>> ¿probaste >>> la consulta directamente en el Query Analizer? >>> >>> >>> >>> -- >>> Saludos, >>> Jhonny Vargas P. >>> http://msmvps.com/jvargas >>> Santiago de Chile >>> >>> "Super" <calinlima02***hotmail.com> escribió en el mensaje de >>> noticias:FEFED083-5928-4ED2-8DA7-53F5EACF2674***microsoft.com... >>>> Gracias por su pronta respuesta, pero aún me pone en nulo los valores >>>> que >>>> le pido cuando no encuentra mivimientos en la fecha anterior a la que >>>> le >>>> doy. >>>> >>>> Alguna otra idea ? >>>> >>>> >>>> "Jhonny Vargas P." <c_h_a_n_g_e_sREMOVE***hotmail.com> escribió en el >>>> mensaje de noticias news:%23o2yrf2YIHA.5396***TK2MSFTNGP02.phx.gbl... >>>>> Entoces piensa en colocar un ISNULL a la Suma. >>>>> >>>>> SELECT ISNULL(SUM(ISNULL(dbo.Detalle_Movimiento.Debe, 0)),0)- >>>>> ISNULL(SUM(ISNULL(dbo.Detalle_Movimiento.Haber,0)) ,0) >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Saludos, >>>>> Jhonny Vargas P. >>>>> http://msmvps.com/jvargas >>>>> Santiago de Chile >>>>> >>>>> "Alberto Poblacion" <earthling-quitaestoparacontestar***poblacion.org> >>>>> escribió en el mensaje de >>>>> noticias:eMPyvb2YIHA.748***TK2MSFTNGP04.phx.gbl... >>>>>> "Jhonny Vargas P." <c_h_a_n_g_e_sREMOVE***hotmail.com> wrote in message >>>>>> news:%23uohuV2YIHA.484***TK2MSFTNGP06.phx.gbl... >>>>>>> Debes usar ISNULL >>>>>>> >>>>>>> >>>>>>> SELECT SUM(ISNULL(dbo.Detalle_Movimiento.Debe, 0))- >>>>>>> SUM(ISNULL(dbo.Detalle_Movimiento.Haber,0)) >>>>>> >>>>>> Esto todavía devolverá NULL si no existe ningún registro en la >>>>>> tabla. >>>>>> Hay que poner un ISNULL por fuera de toda la operación. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>> >> |
| |
| |
![]() |
| Herramientas | |
| Desplegado | |
| |
Temas Similares | ||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Comparar un valor nulo | lagmgame | Newsgroup microsoft.public.es.access | 1 | 11-08-2008 23:30:54 |
| Pasar un valor nulo a sqlserver a traves INSERT | Newsgroup microsoft.public.es.dotnet.vb | 2 | 14-05-2008 15:33:51 | |
| Encontrar un valor maximo en una fila e identificar la columna dondese encuentra dicho valor | dmirandasoto@gmail.com | Newsgroup microsoft.public.es.excel | 2 | 29-11-2007 03:00:42 |
| Como retornar un valor nulo para un valueType | daniel | Newsgroup microsoft.public.es.csharp | 4 | 25-11-2007 18:13:49 |
| Como Saber si un Valor de un consulta es nulo??? | Vitrium | Newsgroup microsoft.public.es.dotnet.framework | 2 | 16-10-2006 15:12:01 |