SQLServer me devuelve 0 en una division..

26/08/2005 - 19:34 por Lord Voldemort | Informe spam
Hola a tod@s

en un SP cuando intento realizar una division entre dos campos y el numero
es menor que cero, sql devuelve 0, cuando deveria de ser 0.45
0.53 o 0.83

los tipos de campo son smallmoney o money

Gracias por su atencion..

Voldemort...

Preguntas similare

Leer las respuestas

#1 Lord Voldemort
26/08/2005 - 19:40 | Informe spam
Hay un error de escritura...Quice decir Menor que Uno


"Lord Voldemort" <@@> wrote in message
news:%
Hola a

en un SP cuando intento realizar una division entre dos campos y el numero
es menor que cero, sql devuelve 0, cuando deveria de ser 0.45
0.53 o 0.83

los tipos de campo son smallmoney o money

Gracias por su atencion..

Voldemort...





Respuesta Responder a este mensaje
#2 Alejandro Mesa
26/08/2005 - 20:15 | Informe spam
Puedes poner un ejemplo?


AMB

"Lord Voldemort" wrote:

Hay un error de escritura...Quice decir Menor que Uno


"Lord Voldemort" <@@> wrote in message
news:%
> Hola a
>
> en un SP cuando intento realizar una division entre dos campos y el numero
> es menor que cero, sql devuelve 0, cuando deveria de ser 0.45
> 0.53 o 0.83
>
> los tipos de campo son smallmoney o money
>
> Gracias por su atencion..
>
> Voldemort...
>
>
>
>
>



Respuesta Responder a este mensaje
#3 Gustavo Larriera [MVP]
26/08/2005 - 20:20 | Informe spam
Muéstranos cómo haces la divisón, qué valores pruebas y qué resultado
correcto esperas tener.

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.

"Lord Voldemort" <@@> wrote in message
news:%
Hola a

en un SP cuando intento realizar una division entre dos campos y el numero
es menor que cero, sql devuelve 0, cuando deveria de ser 0.45
0.53 o 0.83

los tipos de campo son smallmoney o money

Gracias por su atencion..

Voldemort...





Respuesta Responder a este mensaje
#4 Alejandro Mesa
26/08/2005 - 21:56 | Informe spam
En t-sql, la division de enteros da como resultado un entero. Debes convertir
el valor a numeric / decimal para obtener decimales. Puedes hacer la
conversion de forma implicta o explicita.

select
4981/5000 as c1, -- entero data entero
4981.00 / 5000 as c2, -- al usar .00 sql server lo considera decimal
cast(4981 as decimal(6, 2)) / 5000
go


AMB

"Lord Voldemort" wrote:

Hola Gustavo y Ale... copio la consulta..

SELECT dbo.Fases.Codigo, SUM(dbo.Movimientos.Hembras) AS HembrasSem, SUM(dbo.Movimientos.Machos) AS MachosSem,
SUM(dbo.Movimientos.Hembras) + SUM(dbo.Movimientos.Machos) AS TotalSem, SUM(dbo.Mortalidad.Hembras) AS HembrasMor,
SUM(dbo.Mortalidad.Machos) AS MachosMor, SUM(dbo.Mortalidad.Hembras) + SUM(dbo.Mortalidad.Machos) AS TotalMor,
(SUM(dbo.Movimientos.Hembras) + SUM(dbo.Movimientos.Machos)) - (SUM(dbo.Mortalidad.Hembras) + SUM(dbo.Mortalidad.Machos)) AS Cosecha,
dbo.TanquesFases.IDFase AS IDFase,
((SUM(dbo.Movimientos.Hembras) + SUM(dbo.Movimientos.Machos)) - (SUM(dbo.Mortalidad.Hembras) + SUM(dbo.Mortalidad.Machos)))/
(SUM(dbo.Movimientos.Hembras) + SUM(dbo.Movimientos.Machos)) AS SobreVivencia /* aqui en sobrevivencia me devuelve cero 0 */
FROM dbo.Mortalidad INNER JOIN
dbo.Movimientos ON dbo.Mortalidad.IDMovimiento = dbo.Movimientos.IDMovimiento INNER JOIN
dbo.TanquesFases ON dbo.Movimientos.IDTanqueFase = dbo.TanquesFases.IdTanqueFase INNER JOIN
dbo.Fases ON dbo.TanquesFases.IDFase = dbo.Fases.IDFase
WHERE (dbo.Fases.IdSala = 1) AND (dbo.Movimientos.Status = 1)
GROUP BY dbo.TanquesFases.IDFase, dbo.Fases.Codigo

al ejecutar esto resultan estos datos

FASE I 2500 2500 5000 11 8 19 4981 5 0
FASE II 2338 2331 4669 6 12 18 4651 6 0
FASE III 1200 1200 2400 9 10 19 2381 7 0

en este caso quiero encontrar el porcentaje... 4981/5000 =
4651/4669 > 2381/2400 =

en respuesta me sale 0 para todas...


gacias por su tiempo..

Voldemort

"Gustavo Larriera [MVP]" wrote in message news:
> Muéstranos cómo haces la divisón, qué valores pruebas y qué resultado
> correcto esperas tener.
>
> Gustavo Larriera
> Uruguay LatAm
> Blog: http://sqljunkies.com/weblog/gux/
> MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
> Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
> derecho / This posting is provided "AS IS" with no warranties, and confers
> no rights.
>
> "Lord Voldemort" <@@> wrote in message
> news:%
>> Hola a
>>
>> en un SP cuando intento realizar una division entre dos campos y el numero
>> es menor que cero, sql devuelve 0, cuando deveria de ser 0.45
>> 0.53 o 0.83
>>
>> los tipos de campo son smallmoney o money
>>
>> Gracias por su atencion..
>>
>> Voldemort...
>>
>>
>>
>>
>>
>
>
Respuesta Responder a este mensaje
#5 Alejandro Mesa
26/08/2005 - 22:02 | Informe spam
En t-sql, la division de enteros da como resultado un entero.



Me falto decir que sql server trunca el resultado en la division entre
enteros.

select 3 / 2, 3.00 / 2.00


AMB



"Alejandro Mesa" wrote:

En t-sql, la division de enteros da como resultado un entero. Debes convertir
el valor a numeric / decimal para obtener decimales. Puedes hacer la
conversion de forma implicta o explicita.

select
4981/5000 as c1, -- entero data entero
4981.00 / 5000 as c2, -- al usar .00 sql server lo considera decimal
cast(4981 as decimal(6, 2)) / 5000
go


AMB

"Lord Voldemort" wrote:

> Hola Gustavo y Ale... copio la consulta..
>
> SELECT dbo.Fases.Codigo, SUM(dbo.Movimientos.Hembras) AS HembrasSem, SUM(dbo.Movimientos.Machos) AS MachosSem,
> SUM(dbo.Movimientos.Hembras) + SUM(dbo.Movimientos.Machos) AS TotalSem, SUM(dbo.Mortalidad.Hembras) AS HembrasMor,
> SUM(dbo.Mortalidad.Machos) AS MachosMor, SUM(dbo.Mortalidad.Hembras) + SUM(dbo.Mortalidad.Machos) AS TotalMor,
> (SUM(dbo.Movimientos.Hembras) + SUM(dbo.Movimientos.Machos)) - (SUM(dbo.Mortalidad.Hembras) + SUM(dbo.Mortalidad.Machos)) AS Cosecha,
> dbo.TanquesFases.IDFase AS IDFase,
> ((SUM(dbo.Movimientos.Hembras) + SUM(dbo.Movimientos.Machos)) - (SUM(dbo.Mortalidad.Hembras) + SUM(dbo.Mortalidad.Machos)))/
> (SUM(dbo.Movimientos.Hembras) + SUM(dbo.Movimientos.Machos)) AS SobreVivencia /* aqui en sobrevivencia me devuelve cero 0 */
> FROM dbo.Mortalidad INNER JOIN
> dbo.Movimientos ON dbo.Mortalidad.IDMovimiento = dbo.Movimientos.IDMovimiento INNER JOIN
> dbo.TanquesFases ON dbo.Movimientos.IDTanqueFase = dbo.TanquesFases.IdTanqueFase INNER JOIN
> dbo.Fases ON dbo.TanquesFases.IDFase = dbo.Fases.IDFase
> WHERE (dbo.Fases.IdSala = 1) AND (dbo.Movimientos.Status = 1)
> GROUP BY dbo.TanquesFases.IDFase, dbo.Fases.Codigo
>
> al ejecutar esto resultan estos datos
>
> FASE I 2500 2500 5000 11 8 19 4981 5 0
> FASE II 2338 2331 4669 6 12 18 4651 6 0
> FASE III 1200 1200 2400 9 10 19 2381 7 0
>
> en este caso quiero encontrar el porcentaje... 4981/5000 =
> 4651/4669 > > 2381/2400 =
>
> en respuesta me sale 0 para todas...
>
>
> gacias por su tiempo..
>
> Voldemort
>
> "Gustavo Larriera [MVP]" wrote in message news:
> > Muéstranos cómo haces la divisón, qué valores pruebas y qué resultado
> > correcto esperas tener.
> >
> > Gustavo Larriera
> > Uruguay LatAm
> > Blog: http://sqljunkies.com/weblog/gux/
> > MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
> > Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
> > derecho / This posting is provided "AS IS" with no warranties, and confers
> > no rights.
> >
> > "Lord Voldemort" <@@> wrote in message
> > news:%
> >> Hola a
> >>
> >> en un SP cuando intento realizar una division entre dos campos y el numero
> >> es menor que cero, sql devuelve 0, cuando deveria de ser 0.45
> >> 0.53 o 0.83
> >>
> >> los tipos de campo son smallmoney o money
> >>
> >> Gracias por su atencion..
> >>
> >> Voldemort...
> >>
> >>
> >>
> >>
> >>
> >
> >
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida