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>