sql - una - db2 tutorial español
¿Puede IBM DB2 devolver un 0(cero) cuando no se encuentran registros? (2)
Ejecute un comando de selección con la función reservada llamada count
:
select count(*) from STUDENT.GRADES where ID=3
Debería ser así.
por ejemplo: tengo una tabla con identificación de estudiante y calificaciones de estudiantes
-----------------------
ID | grades
-----------------------
1 | 80
2 | 28
-----------------------
Quiero obtener 0 cuando pregunto sobre ID = 3 ¿Puedo hacer eso?
como seleccionar calificaciones del alumno donde id = 3. Quiero obtener 0 porque ID no está en la tabla
Quizás esto hará lo que quieras:
SELECT ID, MAX(Grades)
FROM (SELECT ID, Grade FROM Students WHERE ID = 3
UNION
VALUES (3, 0) -- Not certain of syntax here
)
GROUP BY ID
La idea básica es que los estudiantes presentes en la tabla tendrán dos filas y la MAX elegirá su calificación adecuada (suponiendo que no haya circunstancias en las que la calificación se codifique como un valor negativo). Los estudiantes que no están representados tendrán solo una fila con una calificación de 0. La repetición 3 es la identificación del estudiante que se busca.
Diviértete persiguiendo la sintaxis completa. Empecé en Queries en el Centro de información de DB2 9.7, pero me quedé sin paciencia antes de obtener una buena respuesta, y no tengo DB2 para experimentar. Es posible que necesite escribir SELECT ID, Grades FROM VALUES (3, 0)
, o puede haber algún otro encantamiento mágico que haga el trabajo. Probablemente pueda usar SELECT 3 AS ID, 0 AS Grades FROM SYSIBM.SYSTABLES WHERE TABID = 1
, pero esa es una expresión torpe.
Seguí con el nombre de la columna Grades
(plural) aunque parece que contiene una calificación. Es deprimente la frecuencia con que las personas hacen preguntas sobre las tablas anónimas.