当前位置: 首页 > news >正文

sql 查询(case when)

1、 查询

`SELECT 
CASE WHEN STATUS='1' THEN '状态1'
WHEN STATUS='2' THEN '状态2'
WHEN STATUS='3' THEN '状态3'
WHEN STATUS='0' THEN '状态4'
ELSE '状态5' END AS '状态' 
FROM tb__info_xxx;

2、假设我们有一个包含学生成绩的表 students_scores,我们想要根据分数段给学生评级:

SELECT student_name,score,CASE WHEN score >= 90 THEN '优秀'WHEN score >= 75 THEN '良好'WHEN score >= 60 THEN '及格'ELSE '不及格'END AS grade
FROM students_scores;

3、ELSE 子句在 CASE WHEN 语句中用于指定默认结果,当所有条件都不满足时,返回 ELSE 后的值。

SELECT product_name,price,CASE WHEN price > 100 THEN '高端产品'ELSE '普通产品'END AS product_type
FROM products;

4、CASE WHEN 的嵌套使用

SELECT employee_name,CASE WHEN department = '销售' THEN CASE WHEN sales > 10000 THEN '顶级销售员'ELSE '普通销售员'ENDELSE '非销售部门'END AS employee_category
FROM employees;

5、在 SELECT 中使用 CASE WHEN

SELECT order_id,order_date,CASE WHEN order_date < '2024-01-01' THEN '旧订单'ELSE '新订单'END AS order_type
FROM orders;

6、在 WHERE 中使用 CASE WHEN

SELECT product_name,price
FROM products
WHERE CASE WHEN category = '电子产品' THEN price > 500ELSE price > 100END;

7、在 ORDER BY 中使用 CASE WHEN

SELECT employee_name,department,salary
FROM employees
ORDER BY CASE WHEN department = '人事' THEN salaryELSE salary DESCEND;

8、在 GROUP BY 和 HAVING 中使用 CASE WHEN

SELECT department,COUNT(*),CASE WHEN AVG(salary) > 5000 THEN '高薪部门'ELSE '普通部门'END AS department_type
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;

9、实现多条件的复杂查询

SELECT order_id,customer_name,CASE WHEN order_amount >= 10000 AND order_date >= '2024-01-01' THEN '大单'WHEN order_amount < 10000 AND order_date >= '2024-01-01' THEN '普通单'ELSE '历史订单'END AS order_category
FROM orders;

10、数据清洗与转换

SELECT customer_name,phone_number,CASE WHEN phone_number LIKE '1%' THEN CONCAT('+86 ', phone_number)ELSE phone_numberEND AS formatted_phone_number
FROM customers;

11、统计与聚合操作中的应用

SELECT COUNT(*) AS total_orders,SUM(CASE WHEN status = '已完成' THEN 1 ELSE 0 END) AS completed_orders,SUM(CASE WHEN status = '未完成' THEN 1 ELSE 0 END) AS pending_orders
FROM orders;

12、case when 截取字符串

SELECTSFZHM,XM,CASE WHEN SUBSTR(SFZHM, 0, 6) = 'XXX701' THEN 'XXX701' WHEN SUBSTR(SFZHM, 0, 6) = 'XXX727' THEN 'XXX727'WHEN SUBSTR(SFZHM, 0, 6) = 'XXX726' THEN 'XXX726'WHEN SUBSTR(SFZHM, 0, 6) = 'XXX722' THEN 'XXX722'WHEN SUBSTR(SFZHM, 0, 6) = 'XXX723' THEN 'XXX723'WHEN SUBSTR(SFZHM, 0, 6) = 'XXX725' THEN 'XXX725'WHEN SUBSTR(SFZHM, 0, 6) = 'XXX724' THEN 'XXX724'WHEN SUBSTR(SFZHM, 0, 6) = 'XXX802' THEN 'XXX802'ELSE 'QT_9'
END AS SHORT_SFZ
FROM SYS_USER1 WHERE 1=1 group by SFZHM,XM;

http://www.mrgr.cn/news/46107.html

相关文章:

  • mybatisPlus对于pgSQL中UUID和UUID[]类型的交互
  • m4a怎么转换mp3格式?几种m4a转变成MP3简单方法
  • C++ STL 中的 unordered_map
  • K8s-资源管理
  • 世界职业院校技能大赛赛道设计对“新双高”专业群建设的启示
  • 小型无人机,你负责算法和应用逻辑,剩下的我们负责
  • 基于ZABBIX监控 RabbitMQ服务开箱模板汉化及适用性改造
  • ChatGPT相关参数示例
  • 论文阅读:On determining the hinterlands of China‘s foreign trade container ports
  • Rope – 基于深度学习模型开源的AI换脸技术
  • 山西农业大学20241009
  • 基于SSM的酒店管理系统
  • 加密软件有哪些?2024年十大好用的企业文件加密软件大盘点
  • AFSim仿真系统 --- 系统简解_08 传感器与特征
  • PointNet++网络详解
  • 网络安全在2024好入行吗?
  • 10月9日微语报,星期三,农历九月初七
  • Spring Boot学习宝库:资源与教程汇总
  • 【专题】人工智能AI算力高质量发展评估体系报告合集PDF分享(附原数据表)
  • (怎么从0构建起框架1:)读VM-UNet: Vision Mamba UNet for Medical Image Segmentation有感