【问题标题】:2 column with 2 different condition in one table一张表中有 2 个不同条件的 2 列
【发布时间】:2021-03-02 21:16:50
【问题描述】:

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

这是我的理想输出:

| 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

【问题讨论】:

    标签: sql oracle count pivot


    【解决方案1】:

    我想你想要条件聚合:

    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');
    

    【讨论】:

    • 这正是我想要的。非常感谢@GMB。上帝保佑你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    相关资源
    最近更新 更多