[英]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.