Case when 怎么重命名
时间: 2023-06-24 10:09:12 浏览: 69
在 SQL 中,可以使用 `AS` 关键字来为 `CASE WHEN` 表达式的结果重命名。例如:
```
SELECT CASE WHEN age >= 18 THEN '成年人' ELSE '未成年人' END AS age_group
FROM students;
```
以上语句将根据学生的年龄将其分为成年人和未成年人,并将结果重命名为 `age_group`。你也可以使用其他合法的列名来代替 `age_group`。
相关问题
case when in
引用\[2\]中的MySQL脚本程序展示了一个使用CASE WHEN语句的例子。在这个例子中,根据条件判断选择不同的工作类型。如果outdate小于指定日期,则选择工作类型为'03'、'07'、'15',否则选择工作类型为'01'、'02'、'03'、'04'、'05'、'06'、'15'。这个语句可以用于筛选符合条件的数据。\[2\]
在引用\[3\]中的MySQL脚本程序中,使用了CASE WHEN语句来对ajj_whcd字段进行分类。根据不同的值,将ajj_whcd字段的值映射为不同的教育程度。例如,如果ajj_whcd为空,则映射为"未知",如果ajj_whcd为"初中"或"中学",则映射为"初中",以此类推。最后,使用GROUP BY和COUNT函数对不同教育程度的数量进行统计,并按照指定的顺序进行排序。这个语句可以用于对教育程度进行分类和统计。\[3\]
综上所述,CASE WHEN语句在MySQL中用于根据条件进行选择和分类。它可以根据不同的条件选择不同的值或执行不同的操作。在引用\[2\]和引用\[3\]中的例子中,CASE WHEN语句被用于选择不同的工作类型和教育程度。
#### 引用[.reference_title]
- *1* [CASE WHEN语句中加IN应该如何使用](https://blog.csdn.net/qq_31960623/article/details/121805819)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [oracle 字符串分割函数 与 case when in 使用](https://blog.csdn.net/qq_30832781/article/details/112916195)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [MySQL 字段值归类重命名,并自定义排序,使用 case when in() then](https://blog.csdn.net/zzddada/article/details/105702821)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
select zgh,lxrq,cxqd, (case when cxqd>=1 and cxqd<5 then '铁牌' when cxqd>=5 and cxqd<10 then '铜牌' when cxqd>=10 and cxqd<15 then '银牌' when cxqd>=15 and cxqd<20 then '金牌' when cxqd>=20 then '金牌' else cxqd end) as xz from ( select a.EMPLOYEE_CODE AS zgh,a.JOIN_U_DATE AS lxrq,to_char(round((sysdate- a.JOIN_U_DATE)/365,0)) as cxqd from S001_T_STF_BASE a);
这个查询语句包含了一个嵌套的子查询和一个 CASE 表达式,用于根据 cxqd 的值计算 xz 列的结果。
首先,在子查询中,我们选择了表 S001_T_STF_BASE 中的列 a.EMPLOYEE_CODE(重命名为 zgh)和 a.JOIN_U_DATE(重命名为 lxrq),并使用 sysdate 减去 a.JOIN_U_DATE 来计算 cxqd 列。在计算 cxqd 列时,我们将日期差值除以365,并使用 round 函数将结果四舍五入为整数。
然后,在外部查询中,我们使用 CASE 表达式根据 cxqd 的值进行条件判断,并将对应的结果赋给 xz 列。如果 cxqd 的值在特定的范围内(1到5、5到10、10到15、15到20),则返回相应的牌匾名称(铁牌、铜牌、银牌、金牌)。如果 cxqd 的值大于等于20,则返回金牌。否则,直接返回 cxqd 的值。
请注意,我只能解释和理解您的查询语句,而不能执行它。如果您有任何问题或需要进一步的帮助,请告诉我。