Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Manejo decimales y otra ?

Estas en el tema de Manejo decimales y otra ? en el foro de Bases de Datos General en Foros del Web. # 1 Tengo la siguiente sentencia SELECT (PERIODO_1_BAS.EST_SOC + PERIODO_2_BAS.EST_SOC + PERIODO_3_BAS.EST_SOC)/ 3 FROM PERIODO_1_BAS, PERIODO_2_BAS, PERIODO_3_BAS WHERE PERIODO_1_BAS.CEDULAESTUDIANTE = '1' AND PERIODO_2_BAS.CEDULAESTUDIANTE = '1' ...
  #1 (permalink)  
Antiguo 24/12/2003, 01:31
 
Fecha de Ingreso: abril-2003
Ubicación: Venezuela
Mensajes: 297
Antigüedad: 21 años, 7 meses
Puntos: 1
Manejo decimales y otra ?

# 1 Tengo la siguiente sentencia

SELECT (PERIODO_1_BAS.EST_SOC + PERIODO_2_BAS.EST_SOC + PERIODO_3_BAS.EST_SOC)/ 3 FROM PERIODO_1_BAS, PERIODO_2_BAS, PERIODO_3_BAS WHERE PERIODO_1_BAS.CEDULAESTUDIANTE = '1' AND PERIODO_2_BAS.CEDULAESTUDIANTE = '1' AND PERIODO_3_BAS.CEDULAESTUDIANTE = '1'

Lo que hago es sumar tres celdas de 3 distintas tablas y luego lo divido entre 3, para obtener un promedio, la pregunta es que otra funcion de SQL se puede usar para obtener un numero con dos decimales numero.##, y eliminar ese tira de decimales.

# 2

Mi otra pregunta es tengo la sig tabla (ilustrativa)

id ------ nota_1 ------ nota_2 ------ nota_3 ------ estado
12 ------ 100 ------------ 90 ------------ 90
13 ------ 90 ------------ 90 ----------- 60
14 ------ 100 ------------ 50 ----------- 50


La pregunta es si existe algo en SQL que pueda hacer lo siguiente
ocupo determinar es:
-> si la cantidad de notas inferior a 70 es igual
a CERO en el campo estado coloque A
-> si la cantidad de notas inferiores a 70 es igual a UNO en el campo estado coloque R
-> si la cantidad de notas inferiores a 70 es igual a DOS en el campo estado coloque X

mas o menos esa es la idea, quiero que quede así:


id ------ nota_1 ------ nota_2 ------ nota_3 ------ estado
12 ------ 100 ------------ 90 ------------ 90 ------------A
13 ------ 90 ------------ 90 ----------- 60 ------------R
14 ------ 100 ------------ 50 ----------- 50 ------------ X

Bueno Muchas Gracias.
__________________
crecer es conocer y conocer es aprender
  #2 (permalink)  
Antiguo 24/12/2003, 03:56
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
#1 la opción es utilizar la función Convert.

SELECT Convert(Decimal(5, 2), (PERIODO_1_BAS.EST_SOC + PERIODO_2_BAS.EST_SOC + PERIODO_3_BAS.EST_SOC)/ 3) A Dato FROM PERIODO_1_BAS, PERIODO_2_BAS, PERIODO_3_BAS WHERE PERIODO_1_BAS.CEDULAESTUDIANTE = '1' AND PERIODO_2_BAS.CEDULAESTUDIANTE = '1' AND PERIODO_3_BAS.CEDULAESTUDIANTE = '1'

#2 En este caso lo que debes utilizar es un CASE, si bien es un poco complicado, por cierto, no has especificado que pasa si los tres son inferiores a 70
  #3 (permalink)  
Antiguo 25/12/2003, 01:52
 
Fecha de Ingreso: abril-2003
Ubicación: Venezuela
Mensajes: 297
Antigüedad: 21 años, 7 meses
Puntos: 1
Gracias amigo, lo de los decimales lo hice mejor con la funcion
ROUND(##,1)
y lo otro voy a travesearlo a ver que me resulta gracias.
__________________
crecer es conocer y conocer es aprender
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:03.