【sql】【mysql】【数据库】复杂查询中避免Join的办法

【背景】

很多场景下,需要将长表根据不同的搜索条件GroupBy之后变成横向的短表,例如:

分公司收益年份
a1002022
b2002022
c3002022
a4002021
b5002021
c6002021

想要变化为:

分公司2022收益2021收益
a100400
b200500
c300600

笨办法是分别通过where 年份=2021和where 年份=2022并以分公司groupby后获得相同结构的列,然后以分公司为条件进行join。这种写法的问题在于有几列就要写几个相同结构的子查询,然后将所有列Join,非常繁杂且难于维护。

【更简洁的写法】

用case when配合sum:

SELECT分公司,SUM(CASE WHEN YEAR(年份) = 2022 THEN 收益 END) AS 2022收益,SUM(CASE WHEN YEAR(年份) = 2021 THEN 收益 END) AS 2021收益
FROMtransactions
GROUP BY分公司;

一个查询就可以搞定,而且非常便于维护。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/189213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux基础项目开发1:量产工具——文字系统(四)

前言: 前面我们已经把显示系统,输入系统的框架搭建好了,那么有了输入和显示,显示的内容应该是什么呢?这节就要让我们一起对显示的内容,文字系统进行搭建。 目录 一、数据结构抽象 1.描述一个文字的位图&a…

ubuntu系统下搭建本地物联网mqtt服务器的步骤

那么假如我们需要做一些终端设备,例如温湿度传感器、光照等物联网采集设备要接入呢?怎么样才能将数据报送到服务器呢? 以下内容基于我们ubuntu系统下的emqx成功启动的基础上。我们可以用浏览器键入控制板的地址,如果启动成功&…

特征相关性计较

Pearson相关系数 用于度量两个连续型变量之间的线性关系。取值范围在-1到1之间,0表示无线性关系,1表示完全正相关,-1表示完全负相关 import pandas as pd# 创建一个包含两个连续型变量的DataFrame data {Variable1: [1, 2, 3, 4, 5],Vari…

软件测试的测试文档怎么编写?

编写软件测试文档是一个关键步骤,它可以帮助测试人员记录测试过程、结果和发现的问题,同时为开发团队提供反馈和建议。 以下是一些编写软件测试文档的建议: 测试计划 在测试计划中,描述测试的目标、范围、方法、时间表和资源需求。…

SQL语句

DDL:数据库定义语言(库、表的管理) CREATE,DROP,ALTER mysql> show databases; -------------------- | Database | -------------------- | information_schema | ###虚拟库,用户信息 | mysql | …

iOS简单理解区分MVC、MVP、MVVM

MVC、MVP、MVVM 前言 这篇文章简单介绍MVC、MVP和MVVM三种架构,并配上一个简单的Swift demo来区分MVC和MVVM两种架构。 MVC 传统MVC 下图是传统结构MVC,可以看到这种结构是紧耦合的,不推荐使用。 苹果的MVC 如下图,这是苹果…

AI产业前瞻报告:探讨GPTs背后的产业逻辑:拉开AIGC应用生态的帷幕

今天分享的是AI系列深度研究报告:《AI产业前瞻报告:探讨GPTs背后的产业逻辑:拉开AIGC应用生态的帷幕》。 (报告出品方:光大证券) 报告共计:13页 1、GPTs 拉开 AIGC 应用生态的帷幕 1.1、 Ope…

【开题报告】基于SpringBoot的护肤交流分享平台的设计与实现

1.选题背景 随着社会发展和生活水平提高,人们对于美容护肤的需求越来越高。由于护肤知识需要不断更新和积累,很多用户需要寻找可信赖的护肤信息和经验分享。传统的社交媒体平台虽然可以满足一部分用户的需求,但是缺乏专业性和可靠性&#xf…

系列二十二、各种注解

一、Import # 用法 1)Import(User.class):如果导入的是配置类,将会按照配置类正常解析,如果是个普通类就会解析成bean 2)Import(实现了ImportSelector接口的类.class):可以一次性注册…

Python爬虫基础之Scrapy框架详解

目录 1. 简介2. Scrapy的安装3. Scrapy的架构4. Scrapy的数据流程5. Scrapy开发流程5.1 创建项目5.2 创建Spider5.3 创建Item5.4 编写Spider5.5 运行Spider 参考文献 原文地址:https://program-park.top/2023/12/01/reptile_5/ 本文章中所有内容仅供学习交流使用&am…

0Ω电阻最大过流能力及作用用途

0Ω电阻最大过流能力及作用用途 0Ω电阻过流能力0Ω电阻的作用 0Ω电阻过流能力 0Ω电阻不一定是真正的0Ω电阻,0Ω电阻存在一定的阻值偏差,主要看生产电阻厂商做哪种了。厂商都是根据电阻标准文件 EN60115-2, 里头0Ω电阻实际最大阻值有 10…

第六十四周周报

学习目标: 项目 实验 学习时间: 2023.11.24-2023.12.1 学习产出: 项目 由于小程序要上线了,这周前几天都在和前端联调改bug,并且多拆分出来两张表,工作量比较大,花的时间很多。 实验 整…

JAVA全栈开发 day15_集合(Set接口、增强For循环、Map体系)

一、增加for遍历集合 语法: for(数据类型 变量名: 数组名或集合){​ }//集合遍历 ,推荐使用增加for 1.静态导入 注意事项: 方法必须是静态注意不要和本类的方法同名,如果同名,记得加前缀,由此可…

error: flexible array member not at end of struct 柔性数组/可变数组

在C之中,给定了一个结构定义和一个指向结构的指针,编译器必须能够通过指针偏移的方式访问该结构的任何成员。由于结构中每个成员的位置都取决于其前导成员的数量和类型,因此访问任何结构都需要知道所有前导成员的数量和类型。 在结构体之中&…

Git——分支应用进阶

主要内容包括以下几个方面: 长期分支和短期分支的类型以及用途。多种分支模型,其中包括基于工作流的主题分支。不同分支模型的发布流程。在多个预览版程序中使用分支修复安全问题。远程跟踪分支和refspecs规范,以及默认远程版本库配置。拉取…

Mongodb 开启oplog,java监听oplog并写入关系型数据库

开启Oplog windows mongodb bin目录下找到配置文件/bin/mongod.cfg,配置如下: replication:replSetName: localoplogSizeMB: 1024双击mongo.exe 执行 rs.initiate({_id: "local", members: [{_id: 0, host: "localhost:27017"}]})若出现如…

深入理解前端路由:构建现代 Web 应用的基石(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

多线程(初阶六:单例模式)

一、单例模式的简单介绍 二、饿汉模式 三、懒汉模式 四、饿汉模式和懒汉模式的线程安全问题分析 一、单例模式的简单介绍 单例模式是一种设计模式,其中设计模式是软性的规定,与它关联的框架是硬性的规定,这些都是大佬已经设计好了的&…

feign自定义第三方接口;配置化Feign接口URL;调用指定IP的feign服务

最近接手一个项目,各子工程之间通过feign调用;各服务部署在K8S上,通过nacos管理配置;由于服务部署的机器无法开放端口等原因,导致本机服务与测试环境网络端口无法互通,故需要重写feign的调用地址&#xff1…

QT线程的使用 循环中程序的等待

QT线程的使用 循环中程序的等待 先看效果1 pro文件2 头文件3 源文件4 ui文件先看效果 1 pro文件 QT += concurrent2 头文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H