resueltos registros numero fila ejercicios ejemplos desde contar contador consultas complejas cero aprender agrupados agrupadas sql oracle count oracle-apex

registros - numero de fila sql server



CUENTA de SQL: tabla de salida con dos columnas COUNT con diferentes cláusulas WHERE (3)

Como count() solo cuenta valores no nulos, esto debería funcionar:

select associated_project as project, count(case when issue_status=''OPEN'' then 1 else null end) as open_issue_count, count(case when issue_status=''CLOSED'' then 1 else null end) as closed_issue_count from table group by associated_project;

Por supuesto, esto supone que los únicos valores válidos para issue_status son ''OPEN'' Y ''CLOSED'' . Si este no es el caso, y si desea que se cuenten esos otros estados, ajuste la consulta en consecuencia.

Tengo la necesidad de generar un informe en Oracle APEX que sea similar al siguiente ejemplo:

PROJECT OPEN_ISSUE_COUNT CLOSED_ISSUE_COUNT W-1 3 1 X-2 1 2 Y-3 5 3 Z-4 2 1

Donde OPEN_ISSUE_COUNT y CLOSED_ISSUE_COUNT son generadas por una SQL COUNT . La tabla que se consulta se ve así:

ISSUE_# ISSUE_STATUS ASSOCIATED_PROJECT 1A OPEN W-1 1B OPEN W-1 1C OPEN W-1 2A CLOSED W-1 2B OPEN X-2 2C CLOSED X-2 3A CLOSED X-2 etc...

Entonces en una consulta necesito contar para OPEN_ISSUE_COUNT y CLOSED_ISSUE_COUNT donde ISSUS_STATUS = ''OPEN'' e ISSUS_STATUS = ''CLOSED'' respectivamente y GROUP BY ASSOCIATED_PROJECT .

¿Tiene sentido? Obviamente, puedo hacer esto fácilmente para uno de los dos estados, pero no he podido encontrar ninguna solución viable para lo que estoy describiendo aquí. He revisado algunas cosas aquí y en otras partes en línea y no vi algo similar. Déjame saber lo que piensan ustedes. ¡Gracias!


Otra forma de hacerlo es con la nueva función PIVOT:

with issue_data as ( select associated_project as project, issue_status from issues ) select project, open, closed from issue_data pivot ( count(*) for issue_status in (''OPEN'' as open, ''CLOSED'' as closed) )


select sum(case when status = ''open'' then 1 else 0 end) as open, sum(case when status = ''closed'' then 1 else 0 end) as closed from table where <other restrictions>