一个脚本实现单表多公司按年月统计报表sql写报表统计 by qiweb 201810

本文主要是介绍一个脚本实现单表多公司按年月统计报表sql写报表统计 by qiweb 201810,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、根据公司和日期分组 获得发票数据量

SELECT
    PAY_TAXES_ORGNAME,
    --BILLING_NO,
    LEFT(INVOICE_OPEN_DATE,7) AS MM,
COUNT(1) AS NUM
--,INVOICE_STATE,
 --sum(case when INVOICE_STATE=1  then 1 else 0 end) AS 蓝票,
--sum(case when INVOICE_STATE=2  then 1 else 0 end) as 红票,
--sum(case when INVOICE_STATE=4  then 1 else 0 end) as 作废成功
    --INVOICE_NUMBER,
    --INVOICE_CODE
FROM
    TBL_TXN_INVOICE
WHERE
    INVOICE_OPEN_STATE = 3
and INVOICE_STATE in(1,2,4)
AND INVOICE_CODE IS NOT NULL
GROUP BY LEFT(INVOICE_OPEN_DATE,7),PAY_TAXES_ORGNAME --,INVOICE_STATE

2、根据公司和日期分组 获得不同发票状态下的发票数据量

SELECT
    PAY_TAXES_ORGNAME 公司,
    --BILLING_NO,
    LEFT(INVOICE_OPEN_DATE,7) 年月,
    --INVOICE_NUMBER,
    --INVOICE_CODE,
count(1) 数量,
INVOICE_STATE 发票状态
FROM
    TBL_TXN_INVOICE
WHERE
    INVOICE_OPEN_STATE = 3
and invoice_open_date like '2018-10%'
AND INVOICE_CODE IS NOT NULL
group by PAY_TAXES_ORGNAME,LEFT(INVOICE_OPEN_DATE,7),INVOICE_STATE
;

效果图:

 

3、在脚本一的基础上细分发票状态

SELECT
    PAY_TAXES_ORGNAME,
    --BILLING_NO,
    LEFT(INVOICE_OPEN_DATE,7) AS MM,
COUNT(1) AS NUM,INVOICE_STATE,
 sum(case when INVOICE_STATE=1  then 1 else 0 end) AS 蓝票,
sum(case when INVOICE_STATE=2  then 1 else 0 end) as 红票,
sum(case when INVOICE_STATE=4  then 1 else 0 end) as 作废成功
    --INVOICE_NUMBER,
    --INVOICE_CODE
FROM
    TBL_TXN_INVOICE
WHERE
    INVOICE_OPEN_STATE = 3
and INVOICE_STATE in(1,2,4)
AND INVOICE_CODE IS NOT NULL
GROUP BY PAY_TAXES_ORGNAME,LEFT(INVOICE_OPEN_DATE,7) ,INVOICE_STATE

效果图:

细分后数量变多

4、在3的基础上修改,把分类列出来,同公司同日期合并 在包装子查询,分组再排序得到如下结果

SELECT AA.PAY_TAXES_ORGNAME,AA.MM,
SUM(AA.NUM) AS 合计,
SUM(AA.蓝票) AS 蓝票,
SUM(AA.红票) AS 红票,
SUM(AA.作废成功) AS 作废成功
--CASE AA.INVOICE_STATE  WHEN 1 THEN     1) 蓝票
--case when AA.INVOICE_STATE=1  then 1 else 0 end
 FROM (
SELECT
    PAY_TAXES_ORGNAME,
    --BILLING_NO,
    LEFT(INVOICE_OPEN_DATE,7) AS MM,
COUNT(1) AS NUM,INVOICE_STATE,
 sum(case when INVOICE_STATE=1  then 1 else 0 end) AS 蓝票,
sum(case when INVOICE_STATE=2  then 1 else 0 end) as 红票,
sum(case when INVOICE_STATE=4  then 1 else 0 end) as 作废成功
    --INVOICE_NUMBER,
    --INVOICE_CODE
FROM
    TBL_TXN_INVOICE
WHERE
    INVOICE_OPEN_STATE = 3
and INVOICE_STATE in(1,2,4)
AND INVOICE_CODE IS NOT NULL
GROUP BY PAY_TAXES_ORGNAME,LEFT(INVOICE_OPEN_DATE,7) ,INVOICE_STATE
) AA
GROUP BY AA.PAY_TAXES_ORGNAME,AA.MM
ORDER BY AA.PAY_TAXES_ORGNAME
;

效果图:

 

5、再扩展

SELECT AA.PAY_TAXES_ORGNAME as 公司,AA.MM 开票年月,
SUM(AA.NUM) AS 合计,
SUM(AA.蓝票) AS 蓝票,
SUM(AA.红票) AS 红票,
SUM(AA.作废成功) AS 作废成功
,SUM(AA.专票) AS 专票,
SUM(AA.普票) AS 普票,
SUM(AA.电子票) AS 电子票
--CASE AA.INVOICE_STATE  WHEN 1 THEN     1) 蓝票
--case when AA.INVOICE_STATE=1  then 1 else 0 end
 FROM (
SELECT
    PAY_TAXES_ORGNAME,
    --BILLING_NO,
    LEFT(INVOICE_OPEN_DATE,7) AS MM,
COUNT(1) AS NUM,INVOICE_STATE ,
 sum(case when INVOICE_STATE=1  then 1 else 0 end) AS 蓝票,
sum(case when INVOICE_STATE=2  then 1 else 0 end) as 红票,
sum(case when INVOICE_STATE=4  then 1 else 0 end) as 作废成功
,INVOICE_TYPE ,
 sum(case when INVOICE_TYPE=0  then 1 else 0 end) AS 专票,
sum(case when INVOICE_TYPE=1  then 1 else 0 end) as 普票,
sum(case when INVOICE_TYPE=3 OR INVOICE_TYPE=2  then 1 else 0 end) as 电子票
    --INVOICE_NUMBER,
    --INVOICE_CODE
FROM
    TBL_TXN_INVOICE
WHERE
    INVOICE_OPEN_STATE = 3
and INVOICE_STATE in(1,2,4)
AND INVOICE_CODE IS NOT NULL
GROUP BY PAY_TAXES_ORGNAME,LEFT(INVOICE_OPEN_DATE,7) ,INVOICE_STATE,INVOICE_TYPE
) AA
GROUP BY AA.PAY_TAXES_ORGNAME,AA.MM
ORDER BY AA.PAY_TAXES_ORGNAME
;

这篇关于一个脚本实现单表多公司按年月统计报表sql写报表统计 by qiweb 201810的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/zqsystem/article/details/83025044
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/243608

相关文章

Java 压缩包解压实现代码

《Java压缩包解压实现代码》Java标准库(JavaSE)提供了对ZIP格式的原生支持,通过java.util.zip包中的类来实现压缩和解压功能,本文将重点介绍如何使用Java来解压ZIP或RA... 目录一、解压压缩包1.zip解压代码实现:2.rar解压代码实现:3.调用解压方法:二、注意事项三、总

sql语句字段截取方法

《sql语句字段截取方法》在MySQL中,使用SUBSTRING函数可以实现字段截取,下面给大家分享sql语句字段截取方法,感兴趣的朋友一起看看吧... 目录sql语句字段截取sql 截取表中指定字段sql语句字段截取1、在mysql中,使用SUBSTRING函数可以实现字段截取。例如,要截取一个字符串字

NGINX 配置内网访问的实现步骤

《NGINX配置内网访问的实现步骤》本文主要介绍了NGINX配置内网访问的实现步骤,Nginx的geo模块限制域名访问权限,仅允许内网/办公室IP访问,具有一定的参考价值,感兴趣的可以了解一下... 目录需求1. geo 模块配置2. 访问控制判断3. 错误页面配置4. 一个完整的配置参考文档需求我们有一

Linux实现简易版Shell的代码详解

《Linux实现简易版Shell的代码详解》本篇文章,我们将一起踏上一段有趣的旅程,仿照CentOS–Bash的工作流程,实现一个功能虽然简单,但足以让你深刻理解Shell工作原理的迷你Sh... 目录一、程序流程分析二、代码实现1. 打印命令行提示符2. 获取用户输入的命令行3. 命令行解析4. 执行命令

基于MongoDB实现文件的分布式存储

《基于MongoDB实现文件的分布式存储》分布式文件存储的方案有很多,今天分享一个基于mongodb数据库来实现文件的存储,mongodb支持分布式部署,以此来实现文件的分布式存储,需要的朋友可以参考... 目录一、引言二、GridFS 原理剖析三、Spring Boot 集成 GridFS3.1 添加依赖

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

SQL Server身份验证模式步骤和示例代码

《SQLServer身份验证模式步骤和示例代码》SQLServer是一个广泛使用的关系数据库管理系统,通常使用两种身份验证模式:Windows身份验证和SQLServer身份验证,本文将详细介绍身份... 目录身份验证方式的概念更改身份验证方式的步骤方法一:使用SQL Server Management S

MySQL 字符串截取函数及用法详解

《MySQL字符串截取函数及用法详解》在MySQL中,字符串截取是常见的操作,主要用于从字符串中提取特定部分,MySQL提供了多种函数来实现这一功能,包括LEFT()、RIGHT()、SUBST... 目录mysql 字符串截取函数详解RIGHT(str, length):从右侧截取指定长度的字符SUBST

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径

MySQL中的事务隔离级别详解

《MySQL中的事务隔离级别详解》在MySQL中,事务(Transaction)是一个执行单元,它要么完全执行,要么完全回滚,以保证数据的完整性和一致性,下面给大家介绍MySQL中的事务隔离级别详解,... 目录一、事务并发问题二、mysql 事务隔离级别1. READ UNCOMMITTED(读未提交)2