首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在透视中应用条件聚合函数?

如何在透视中应用条件聚合函数?
EN

Stack Overflow用户
提问于 2018-01-23 23:44:44
回答 1查看 135关注 0票数 0

我有以下疑问:

代码语言:javascript
复制
SELECT "CASE_RECORD_ID",
  "OPEN_DT",
  "PENDING_DT",
  "CLOSED_DT"
FROM
  (SELECT case_record_id,
    workflow_status_cd,
    workflow_status_dt
  FROM case_workflow_status
  ) PIVOT ( MIN(workflow_status_dt) FOR workflow_status_cd IN ('O' AS open_dt, 'P' AS pending_dt, 'C' AS closed_dt) );

如何根据workflow_status_cd的不同应用不同的聚合函数?我的非工作尝试如下:

代码语言:javascript
复制
SELECT "CASE_RECORD_ID",
    "OPEN_DT",
    "PENDING_DT",
    "CLOSED_DT"
  FROM
    (SELECT case_record_id,
      workflow_status_cd,
      workflow_status_dt
    FROM case_workflow_status
    ) 

    PIVOT (

    (
    CASE workflow_status_cd
        WHEN 'O' THEN MIN(workflow_status_dt)
        WHEN 'P' THEN MAX(workflow_status_dt)
        WHEN 'C' THEN MAX(workflow_status_dt)
    END
    )
      FOR workflow_status_cd IN ('O' AS open_dt, 'P' AS pending_dt, 'C' AS closed_dt) 
  );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-24 00:01:51

只需使用适当的聚合函数,每个函数中都有一条CASE语句,以匹配适当的状态:

代码语言:javascript
复制
SELECT CASE_RECORD_ID,
       MIN( CASE WHEN workflow_status_cd = 'O' THEN workflow_status_dt END ) AS OPEN_DT,
       MAX( CASE WHEN workflow_status_cd = 'P' THEN workflow_status_dt END ) AS PENDING_DT,
       MAX( CASE WHEN workflow_status_cd = 'C' THEN workflow_status_dt END ) AS CLOSED_DT
FROM   case_workflow_status
GROUP BY CASE_RECORD_ID;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48405660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档