首页 > 数据库 >sql改正

sql改正

时间:2023-06-08 11:48:13浏览次数:31  
标签:fee no 改正 bill 01 sql date type

改正以下SQL: 
-- 统计备位截止当日的应还 
SELECT sum(if(fee_type = 'Pricinpal',bill_amount,0)) as `当日应还本金(备)` 
	,sum(if(fee_type = 'Interest',bill_amount,0)) as `当日应还利息(备)` 
	,sum(if(fee_type = 'Penalty',bill_amount,0)) as `当日应还罚息(备)` 
from 
	(select due_bill_no,fee_type,bill_amount ,bill_status ,bill_date ,repaid_date ,term  
	from acc_cus.cus_bill_detail 
	where  
	-- 统计逾期未还的数据 
	(project_no = 'BUWS0014200001' and bill_status = 'OVERDUE' AND bill_date < '2022-10-01')  
	-- 统计当天出账的数据,包括当天到期、提前结清的数据 
	or (project_no = 'BUWS0014200001' and bill_date = '2022-10-01') 
	-- 统计当天还款的以前逾期的数据 
	or (project_no = 'BUWS0014200001' AND bill_date < '2022-10-01' AND repaid_date = '2022-10-01' and bill_status = 'REPAID') 
	HAVING due_bill_no not in ('1121072203075770893065','1121072209002313690366','1121072516444084110457','1121091914192720237495') 
);
改正后的SQL:
SELECT 
    SUM(CASE WHEN fee_type = 'Pricinpal' THEN bill_amount ELSE 0 END) AS  `当日应还本金(备)` ,
    SUM(CASE WHEN fee_type = 'Interest' THEN bill_amount ELSE 0 END) AS  `当日应还利息(备)` ,
    SUM(CASE WHEN fee_type = 'Penalty' THEN bill_amount ELSE 0 END) AS  `当日应还罚息(备)` 
FROM 
    (SELECT 
        due_bill_no, fee_type, bill_amount, bill_status, bill_date, repaid_date, term 
    FROM 
        acc_cus.cus_bill_detail
    WHERE 
        -- 统计逾期未还的数据
        (project_no = 'BUWS0014200001' AND bill_status = 'OVERDUE' AND bill_date < '2022-10-01') 
        -- 统计当天出账的数据,包括当天到期、提前结清的数据
        OR (project_no = 'BUWS0014200001' AND bill_date = '2022-10-01')
        -- 统计当天还款的以前逾期的数据
        OR (project_no = 'BUWS0014200001' AND bill_date < '2022-10-01' AND repaid_date = '2022-10-01' AND bill_status = 'REPAID')
    ) AS t
WHERE 
    due_bill_no NOT IN ('1121072203075770893065', '1121072209002313690366', '1121072516444084110457', '1121091914192720237495'); 
 修改说明:
1. 在SELECT语句中,使用了SUM和CASE WHEN语句来计算应还本金、利息和罚息的总和,避免了使用IF函数的错误。
2. 在FROM子句中,将子查询的结果作为表t来使用,使得查询更加清晰。
3. 在WHERE子句中,将NOT IN语句放在外层查询中,避免了在子查询中使用HAVING语句的错误。

标签:fee,no,改正,bill,01,sql,date,type
From: https://www.cnblogs.com/Uni-Hoang/p/17465715.html

相关文章

  • MySQL索引的数据结构
    一:索引概述MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。索引的本质:索引是数据结构。可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法。1:索引优缺点......
  • PL/SQL 中文的查询条件查询不到数据
    1.有很多种方法可以查出oracleserver端的字符集,比较直观的查询方法是以下这种:selectuserenv('language')fromdual;2.添加系统变量NLS_LANGAMERICAN_AMERICA.AL32UTF83.cmd查看系统变量echo%NLS_LANG%4.重启pl/sql ......
  • mysql8.0设置时区
    在MySQL8.0中,可以使用以下命令查看当前数据库系统的时区设置:SELECT@@global.time_zone;该命令将返回一个字符串,表示当前数据库系统的时区设置。例如,返回如下结果:+--------------------+|@@global.time_zone|+--------------------+|SYSTEM|+------......
  • mysql常见的时间查询语句
    mysql数据库要按当天、昨天、前七日、近三十天、季度、年查询查询今天select*from表名whereto_days(时间字段名)=to_days(now());   查询昨天SELECT*FROM表名WHERETO_DAYS(NOW())-TO_DAYS(`时间字段名`)=1 查询7天 sql语句SELECT*FROM表名whereDATE_SUB(CU......
  • centos7 部署 Mysql 5.7
    (centos7部署Mysql5.7)一、安装2.1环境准备1、查看系统自带或之前安装的mariadb。rpm-qa|grepmariadb2、卸载它们rpm-e--nodepsmariadb-libs-5.5.60-1.el7_5.x86_643、再看一下之前有没有安装过mysqlrpm-qa|grepmysql如果没有这里不会有任何的返回,如......
  • 使用SQL中的update更新多个字段值
    使用SQL中的update更新多个字段值,set后面的条件要用逗号不能用andset后面的多个条件之间没有关联也不可以有关联,所以就不能用and了;where条件后面可以为and如:updatetablesetsex='男',name='张三'whereid=1;         正确updatetablesetsex='男'and......
  • mysql安全策略
    基于8.x版本安装插件mysql>installpluginCONNECTION_CONTROLsoname'connection_control.so';QueryOK,0rowsaffected(0.01sec)mysql>installpluginCONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTSsoname'connection_control.so';QueryOK,......
  • 3_Installing Linux, Apache, MySQL, PHP (LAMP) Stack on Ubuntu 20.04
      地址:https://www.codewithharry.com/blogpost/lamp-stack-ubuntu-20-04/ InstallingLAMPstackonUbuntu20.04in5MinutesThispostwillexplainhowtoinstallLAMPstackonUbuntu20.04.LAMPstackconsistsofthefollowingcomponents:Linux-AnyLi......
  • CentOS中安装mysql
    安装前检查:一。先检查CentOS 的默认数据库 mariadb是否存在  rpm-qa|grepmariadb查出结果mariddb-libs-5.5.68-1.el7.x86_64二。强行删除上边的文件rpm-e--nodepsmariadb-libs-5.5.68-1.el7.x86_64 开始安装:一。下载 wget命令工具......
  • 第3天学习Docker-Docker部署常见应用(MySQL、Tomcat、Nginx、Redis、Centos)
    前提须知:(1)搜索镜像命令格式:dockersearch镜像名(2)设置Docker镜像加速器详见文章:Docker设置ustc的镜像源(镜像加速器)1、部署MySQL拉取镜像(这里拉取mysql5.7版本)[root@localhost~]#dockerpullmysql:5.7创建容器(默认运行)[root@localhost~]#dockerrun-di--name=my_mysql-p330......