Oracle - Poner un valor de 0 por defecto a un count

 
Vista:
sin imagen de perfil

Poner un valor de 0 por defecto a un count

Publicado por Sergio Aguirre (3 intervenciones) el 26/01/2017 03:00:34
Sucede que necesito saber si le puedo poner un valor de 0 por defecto a un count asi sea que no existan registros en una tabla o que solamente haga el count cuando exista registro lo que pasa es que tengo una tabla que me muestra unos registros y en otra tabla que asocio esos registros pero no todos tienen datos en esta otra tabla asi que de los datos de la primera tabla que no encuentre registros en la segunda tabla me ponga un 0.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Poner un valor de 0 por defecto a un count

Publicado por Rafael (328 intervenciones) el 26/01/2017 07:50:23
Has un OUTER JOIN y cuando el campo a contar sea nulo lo asocie como 0

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Poner un valor de 0 por defecto a un count

Publicado por Sergio (3 intervenciones) el 26/01/2017 21:26:18
Esta es la consulta como podria hacer para que me haga el count solamente cuando existan eventos.

select TO_DATE (TO_CHAR (M.DATETIMELOCAL, 'YYYY-MON-DD HH24:MI:SS'), 'YYYY-MON-DD HH24:MI:SS' ) as FECHA, M.MATCHFIFAID, OFR.INTERNATIONALSHORTNAME, count(ME.EVENTTYPE) as GOLES
from MATCHES M, MATCHTEAMS MT, ORGANISATIONOFFICIALREGS OFR, MATCHEVENTS ME
where M.COMPETITIONFIFAID = 11097259 and M.MATCHFIFAID = MT.MATCHFIFAID and MT.TEAMFIFAID = OFR.ORGANISATIONFIFAID and M.MATCHFIFAID = ME.MATCHFIFAID
and ME.MATCHTEAM = MT.TEAMNATURE and ME.EVENTTYPE in ('GOAL','PENALTY')
group by M.MATCHFIFAID, OFR.INTERNATIONALSHORTNAME, M.DATETIMELOCAL
order by FECHA desc;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Poner un valor de 0 por defecto a un count

Publicado por Rafael (328 intervenciones) el 27/01/2017 08:14:32
Algo como esto debería de funcionar:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT TO_DATE (TO_CHAR (M.DATETIMELOCAL, 'YYYY-MON-DD HH24:MI:SS'),
                  'YYYY-MON-DD HH24:MI:SS')
            AS FECHA,
         M.MATCHFIFAID,
         OFR.INTERNATIONALSHORTNAME,
         SUM (CASE WHEN ME.EVENTTYPE IS NULL THEN 0 ELSE 1 END) AS GOLES
    FROM MATCHES M,
         MATCHTEAMS MT,
         ORGANISATIONOFFICIALREGS OFR,
         MATCHEVENTS ME
   WHERE     M.COMPETITIONFIFAID = 11097259
         AND M.MATCHFIFAID = MT.MATCHFIFAID (+)
         AND MT.TEAMFIFAID = OFR.ORGANISATIONFIFAID (+)
         AND M.MATCHFIFAID = ME.MATCHFIFAID (+)
         AND ME.MATCHTEAM = MT.TEAMNATURE
         AND ME.EVENTTYPE IN ('GOAL', 'PENALTY')
GROUP BY M.MATCHFIFAID, OFR.INTERNATIONALSHORTNAME, M.DATETIMELOCAL
ORDER BY FECHA DESC;

En negritas las modificaciones.

Me queda la duda si no te marcara error en AND ME.MATCHTEAM = MT.TEAMNATURE
Pero es que la estructura del query poco sentido tiene para mi tendría que conocer mas la base de datos.

Saludos
Pd. Si la información te sirve a mi me sirve un +1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar