首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用CASE WHERE或date子句返回日期类型

如何使用CASE WHERE或date子句返回日期类型
EN

Stack Overflow用户
提问于 2022-07-08 18:33:14
回答 1查看 74关注 0票数 0
代码语言:javascript
复制
  WITH t_summary AS (
            SELECT empid, result, t_date
                ,   SUM(CASE WHEN t_date >= sysdate-5 THEN 1 ELSE 0 END) AS test_01 
                ,   SUM(CASE WHEN t_date >= sysdate-30 THEN 1 ELSE 0 END) AS test_02   
                ,   SUM(CASE WHEN t_date < sysdate-15 AND t_date >= sysdate-30 THEN 1 ELSE 0 END) AS test_03
              FROM employees
             WHERE result IN ('TRUE')
               AND t_date >= sysdate-30
             GROUP BY empid, result, t_date  
    )  
    SELECT empid, result, t_date
      FROM t_summary
    
    /* I should have a logic to define t_date (date type) associated with test_01 and test_03 at least.
    
        if test_01 > 0 AND test_02 = 0, MAX(test_01.t_date)
        else if test_01 > 0 AND test_03 > 0, MIN(test_03.t_date)
    
    */
    
      WHERE t_date = (CASE WHEN test_01 > 0 AND test_02=0 THEN test_01.t_date
    ...
                                     ELSE NULL
                                     END)
    ;

我还不能完成这项工作。如何与test_01、test_02和test_03一起指定日期?

EN

回答 1

Stack Overflow用户

发布于 2022-07-08 18:53:05

这将永远不会匹配任何行。

WITH子句中,有一个过滤器:

代码语言:javascript
复制
WHERE t_date >= sysdate-30

然后在SELECT中有:

代码语言:javascript
复制
SUM(CASE WHEN t_date >= sysdate-30 THEN 1 ELSE 0 END) AS test_02

由于WHERE子句将筛选出那里的任何行,t_date < SYSDATE-30,那么CASE表达式将始终为true,因此您可以有效地使用:

代码语言:javascript
复制
SUM(1) AS test_02

总能给你一个积极的价值。

最后,在外部查询中,您有:

代码语言:javascript
复制
WHERE t_date = (CASE
                WHEN test_01 > 0 AND test_02=0
                THEN test_01.t_date
                ELSE NULL
                END)

因为,一个组必须有一个匹配行才能存在,所以test_02必须是非零的,因此CASE表达式将永远不会匹配该WHEN子句,并且您正在筛选WHERE t_date = NULL,而且由于NULL永远不等于任何东西,那么您的查询就永远不会匹配一行。

(忽略test_01.t_date是无效语法的事实,因为您没有使用标识符test_01__声明表或表别名。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72915639

复制
相关文章

相似问题

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