首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自另一个Case表达式的case表达式

来自另一个Case表达式的case表达式
EN

Stack Overflow用户
提问于 2020-12-07 18:28:04
回答 2查看 42关注 0票数 0

我有SQL代码示例,它返回周数

代码语言:javascript
运行
复制
,CASE       WHEN dateadd(MONTH, datediff (MONTH,AgentStart, getdate()), AgentStart) > getdate()
            THEN datediff(MONTH, AgentStart, getdate()) - 1
            ELSE datediff(MONTH, AgentStart, getdate())
            END as 'Month'

我不去想现在如何添加一个新的列,它将给我提供这个结果(来自同一个表):

代码语言:javascript
运行
复制
,CASE       WHEN **MONTH FROM CASE STATEMENT ABOVE** BETWEEN 0 AND 3 THEN 'Youngest' 
            WHEN **MONTH FROM CASE STATEMENT ABOVE** BETWEEN 4 AND  5 THEN 'Young' 
            WHEN **MONTH FROM CASE STATEMENT ABOVE** BETWEEN 6 AND 11 THEN 'Medium' 
            ELSE 'Old'
            END AS "Status"
EN

回答 2

Stack Overflow用户

发布于 2020-12-07 18:32:23

您可以使用子查询:

代码语言:javascript
运行
复制
SELECT `month`,
        CASE WHEN `month` BETWEEN 0 AND 3 THEN 'Youngest' 
             WHEN `month` BETWEEN 4 AND  5 THEN 'Young' 
             WHEN `month` BETWEEN 6 AND 11 THEN 'Medium' 
             ELSE 'Old'
        END AS Status
FROM   (SELECT CASE  
               WHEN dateadd(MONTH, datediff (MONTH,AgentStart, getdate()), AgentStart) > getdate()
               THEN datediff(MONTH, AgentStart, getdate()) - 1
               ELSE datediff(MONTH, AgentStart, getdate())
               END as `Month`
       FROM    mytable) t
票数 1
EN

Stack Overflow用户

发布于 2020-12-07 18:33:23

您可以编写一个内联视图来完成此任务

例如:

代码语言:javascript
运行
复制
select case WHEN x.month_value BETWEEN 0 AND 3 THEN 'Youngest' 
            WHEN x.month_value  BETWEEN 4 AND  5 THEN 'Young' 
            WHEN x.month_value  BETWEEN 6 AND 11 THEN 'Medium' 
            ELSE 'Old'
            END AS "Status"
       ,--rest of the columns from the inner query...
  from (
    select CASE 
               WHEN dateadd(MONTH, datediff (MONTH,AgentStart, getdate()), AgentStart) > getdate()
                THEN datediff(MONTH, AgentStart, getdate()) - 1
                ELSE datediff(MONTH, AgentStart, getdate())
                END as month_value --naming it as month_value
    from <table>
       )x
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65179991

复制
相关文章

相似问题

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