简体   繁体   English

来自另一个案例表达式的案例表达式

[英]Case expression from another case expression

I have sample of SQL code, that returns number of weeks我有 SQL 代码示例,它返回周数

,CASE       WHEN dateadd(MONTH, datediff (MONTH,AgentStart, getdate()), AgentStart) > getdate()
            THEN datediff(MONTH, AgentStart, getdate()) - 1
            ELSE datediff(MONTH, AgentStart, getdate())
            END as 'Month'

I keep my head off how I can now add a new column that will give me this result (from same table):我不知道现在如何添加一个新列,它将给我这个结果(来自同一个表):

,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"

You could use a subquery:您可以使用子查询:

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

You may write an inline view to get this done您可以编写一个内联视图来完成此操作

Eg:例如:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM