mySql——case when else ....demo

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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;





相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
存储 SQL 关系型数据库
MySQL存储过程 if、case、while、loop、游标、变量、条件处理程序
MySQL存储过程 if、case、while、loop、游标、变量、条件处理程序
50 0
|
10月前
|
关系型数据库 MySQL
MySQL实战基础知识入门(4):MySQL高级函数CASE WHEN END
MySQL实战基础知识入门(4):MySQL高级函数CASE WHEN END
72 0
|
5月前
|
SQL 关系型数据库 MySQL
MySQL知识汇总:MySQL函数CASE WHEN用法详解
MySQL知识汇总:MySQL函数CASE WHEN用法详解
|
8月前
|
SQL Oracle 关系型数据库
java实现oracle和mysql的group by分组功能|同时具备max()/min()/sum()/case when 函数等功能
java实现oracle和mysql的group by分组功能|同时具备max()/min()/sum()/case when 函数等功能
|
8月前
|
关系型数据库 MySQL
Mysql 使用case排序
Mysql自定义排序使用case进行排序
|
8月前
|
关系型数据库 MySQL
Mysql中 Case的使用方法
Mysql中 Case的使用方法
|
10月前
|
SQL 关系型数据库 MySQL
Mysql表达式 | CASE IF 判空
Mysql表达式 | CASE IF 判空
|
3天前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
11 0
|
1天前
|
关系型数据库 MySQL 数据库
mysql 设置环境变量与未设置环境变量连接数据库的区别
设置与未设置MySQL环境变量在连接数据库时主要区别在于命令输入方式和系统便捷性。设置环境变量后,可直接使用`mysql -u 用户名 -p`命令连接,而无需指定完整路径,提升便利性和灵活性。未设置时,需输入完整路径如`C:\Program Files\MySQL\...`,操作繁琐且易错。为提高效率和减少错误,推荐安装后设置环境变量。[查看视频讲解](https://www.bilibili.com/video/BV1vH4y137HC/)。
17 3
mysql 设置环境变量与未设置环境变量连接数据库的区别
|
3天前
|
关系型数据库 MySQL 数据库连接
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
12 0