mySql——case when else ....demo

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: DROP PROCEDURE IF EXISTS Pro_query_change_charge_by_layer_report;CREATE PROCEDURE Pro_query_change_charge_by_layer_report ( IN cityCode varcha...



DROP PROCEDURE IF EXISTS Pro_query_change_charge_by_layer_report;

CREATE PROCEDURE Pro_query_change_charge_by_layer_report (
	IN cityCode varchar(32),/*城市code*/
	IN areaCode varchar(16),/*区域code*/
	IN energyStation INT,/*能源站code*/
	IN beginDateTime datetime,/*开始时间*/
	IN endDateTime datetime/*结束时间*/
)
BEGIN


SET @belongCity = cityCode;/*所属城市code*/
set @area=areaCode;/*区域*/
set @energyStation=energyStation; /*能源站code*/
set @beginDateTime=(
										CASE
										WHEN ISNULL(beginDateTime) or beginDateTime='' THEN
											date_sub(curdate(), INTERVAL 6 DAY)
										ELSE
											DATE_FORMAT(beginDateTime,'%Y-%m-%d')
										END
									); /*起始时间*/
set @endDateTime=(
										CASE
										WHEN ISNULL(endDateTime) or endDateTime='' THEN
											curdate()
										ELSE
											DATE_FORMAT(endDateTime,'%Y-%m-%d')
										END
									); /*结束时间*/



/*结束时间*/
select 
	v_worklist.station_name,/*站点名称*/
	v_worklist.station_id,/*网点id*/
	sum(
		case when (v_worklist.create_time BETWEEN @beginDateTime and @endDateTime) 
							or
							(v_worklist.create_time>@beginDateTime and (v_worklist.end_time<@endDateTime or v_worklist.end_time is NULL )) 
		then 1
		else 0
		end
		) as shouldChangeOrder,/*应换工单*/
	sum(
		case when v_worklist.create_time BETWEEN @beginDateTime and @endDateTime
		then 1
		else 0
		end
	) as newAddOrder,/*新增工单*/
  sum(
		case when v_worklist.end_time BETWEEN @beginDateTime and @endDateTime
		then 1
		else 0
		end
	) as realChangeOrder/*实换工单*/
	
			
from v_queryworkorderlist v_worklist

WHERE
		(CASE  WHEN IFNULL(@belongCity,'0')='0' OR @belongCity=''  THEN  1 ELSE   
    
        CAST(LOCATE(@belongCity,v_worklist.belong_city) AS SIGNED )   
    
        END)=1   
AND

	(CASE  WHEN IFNULL(@area,'0')='0' or @area='' THEN  1 ELSE   
    
        CAST(LOCATE(@area,v_worklist.belong_area) AS SIGNED )   
    
        END)=1 
AND

	(CASE  WHEN IFNULL(@energyStation,'0')='0'  THEN  1 ELSE   
    
        CAST(LOCATE(@energyStation,v_worklist.repository_id) AS SIGNED )   
    
        END)=1 


group by v_worklist.station_id;

END;





相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
存储 SQL NoSQL
|
6月前
|
SQL 关系型数据库 MySQL
mysql 中 case when 的使用
mysql 中 case when 的使用
|
8月前
|
关系型数据库 MySQL
MySQL中CASE WHEN用法总结
MySQL中CASE WHEN用法总结
|
8月前
|
关系型数据库 MySQL
mysql动态查列(case when then else end)
mysql动态查列(case when then else end)
|
8月前
|
关系型数据库 MySQL 数据库
实时计算 Flink版操作报错合集之下载了mysql的cdc的demo,在本地调试时,报错:找不到这个包,该怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
188 0
|
8月前
|
SQL 关系型数据库 MySQL
MySQL——case when语句测试
MySQL——case when语句测试
80 0
|
8月前
|
存储 关系型数据库 MySQL
MySQL数据库——存储过程-if条件判断、参数、case(介绍、用法、案例)
MySQL数据库——存储过程-if条件判断、参数、case(介绍、用法、案例)
484 0
|
3天前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
47 25
|
12天前
|
关系型数据库 MySQL 数据库
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
91 42
|
26天前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决