首页 > 解决方案 > 一张表中有 2 个不同条件的 2 列

问题描述

是否可以创建一个查询,该查询将输出具有 2 个不同 WHERE 子句的 2 列

这是我的理想输出:

| YEAR | WW | COUNT | *COUNT2 |

其中 count 1 是第一个 WHERE 子句的结果。我已经创建了。我想要的是另一列,其中的值将使用不同的 WHERE 子句。

这是我的查询:

SELECT extract(YEAR FROM EVT_TARGET) as Years, to_char(EVT_TARGET, 'ww') AS WorkWeek, COUNT(*) 
FROM r5events 
WHERE EVT_JOBTYPE = 'CORR' AND EVT_RSTATUS <> 'C' AND EVT_TARGET IS NOT NULL 
GROUP BY extract(YEAR FROM EVT_TARGET), to_char(EVT_TARGET, 'ww');

通过这个查询,我能够获得第 1 3 列,我现在的问题是如何在第 4 列上提供值为EVT_RSTATUS = 'C'.

有什么见解吗?

TIA

标签: sqloraclecountpivot

解决方案


我认为你想要条件聚合:

SELECT 
    extract(YEAR FROM EVT_TARGET) as Years, 
    to_char(EVT_TARGET,'ww') AS WorkWeek, 
    SUM(CASE WHEN EVT_RSTATUS <> 'C' THEN 1 ELSE 0 END) AS cnt1,
    SUM(CASE WHEN EVT_RSTATUS =  'C' THEN 1 ELSE 0 END) AS cnt2
FROM r5events 
WHERE EVT_JOBTYPE ='CORR' AND EVT_TARGET IS NOT NULL 
GROUP BY extract(YEAR FROM EVT_TARGET), to_char(EVT_TARGET,'ww');

推荐阅读