Db2 如何在1个查询中选择1列的计数

Db2 如何在1个查询中选择1列的计数,db2,Db2,我希望以下查询作为单个查询 我的目的是只获取计数,其中job\u status=A,其中job\u status=A,以及总数 select WORKSTATION_NAME AS CPU, count(*) AS TOTAL from MDL.JOB_HISTORY_V where MONTH(JOB_RUN_DATE_TIME) = 01 AND YEAR(JOB_RUN_DATE_TIME) = 2015 GROUP BY W

我希望以下查询作为单个查询

我的目的是只获取计数,其中
job\u status=A
,其中
job\u status=A
,以及总数

select 
    WORKSTATION_NAME AS CPU,
    count(*) AS TOTAL 
from 
    MDL.JOB_HISTORY_V 
where 
    MONTH(JOB_RUN_DATE_TIME) = 01 
    AND YEAR(JOB_RUN_DATE_TIME) = 2015 
GROUP BY 
    WORKSTATION_NAME

select 
    WORKSTATION_NAME AS CPU,
    count(*) AS SUCCESS_RUNS 
from 
    MDL.JOB_HISTORY_V 
where 
    JOB_STATUS = 'S' 
    and MONTH(JOB_RUN_DATE_TIME) = 01 
    AND YEAR(JOB_RUN_DATE_TIME) = 2015 
GROUP BY 
    WORKSTATION_NAME

select 
    WORKSTATION_NAME AS CPU, 
    count(*) AS ABEND_RUNS 
from 
    MDL.JOB_HISTORY_V 
where 
    JOB_STATUS = 'A' 
    and MONTH(JOB_RUN_DATE_TIME) = 01 
    AND YEAR(JOB_RUN_DATE_TIME) = 2015 
GROUP BY 
    WORKSTATION_NAME

您可以使用以下条件进行计数:

select WORKSTATION_NAME AS CPU
    ,  count(*) AS TOTAL
    ,  count(case when JOB_STATUS = 'S' then 1 end) as SUCCESS_RUNS
    ,  count(case when JOB_STATUS = 'A' then 1 end) as ABEND_RUNS 
from MDL.JOB_HISTORY_V 
where MONTH(JOB_RUN_DATE_TIME) = 01 
  AND YEAR(JOB_RUN_DATE_TIME) = 2015 
GROUP BY WORKSTATION_NAME

>其中job_status=A,job_status=A?其中job_status=A,其中job_status=S。这些是可能的值..A,S F..etcSide注意:执行
月(job_RUN_DATE_TIME)=01等操作将阻止优化器使用索引。这可能会导致系统执行完整的表扫描,从而导致更长的运行时间。你想做一些类似于“代码>作业运行日期时间>='2015-01-01'和作业运行日期时间<'2015-02-01'
的事情。很高兴它成功了。不要忘记将其标记为答案,因为这将使其他人更容易跟踪完成。我有一个问题,如何使用substr,因为csv没有打开输出文件的精细格式?以及当我使用下面的查询在输出文件中导出时。没有列标题/opt/TWS/TWA/TWS/db2inst1/sqllib/bin/db2“导出到del的daily.csv选择工作站名称作为CPU,计数(*)作为总数,计数(当作业状态为'S'时的情况,然后是1结束)作为成功运行,计数(当作业状态为'A'时的情况,然后是1结束)作为异常结束,从MDL.JOB\u历史记录运行,其中月(作业运行日期时间)=03和年(作业运行日期时间)=2015按工作站分组\u名称“