我有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'
我不去想现在如何添加一个新的列,它将给我提供这个结果(来自同一个表):
,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"
发布于 2020-12-07 10:32:23
您可以使用子查询:
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
发布于 2020-12-07 10:33:23
您可以编写一个内联视图来完成此任务
例如:
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
https://stackoverflow.com/questions/65179991
复制相似问题