项目中遇到的sql问题记录

news2024/9/23 3:25:47

有一张表,表结构及数据如下:

INSERT INTO `test`.`test_approve`(`approve_no`, `tra_date`, `tablename`, `part_dt`) VALUES ('approve001', '2021-02-18 00:00:00', 'tableA', '2024-03-18');
INSERT INTO `test`.`test_approve`(`approve_no`, `tra_date`, `tablename`, `part_dt`) VALUES ('approve002', '2021-02-18 00:05:00', 'tableB', '2024-03-18');
INSERT INTO `test`.`test_approve`(`approve_no`, `tra_date`, `tablename`, `part_dt`) VALUES ('approve002', '2021-02-18 00:05:00', 'tableB', '2024-03-18');
INSERT INTO `test`.`test_approve`(`approve_no`, `tra_date`, `tablename`, `part_dt`) VALUES ('approve003', '2022-05-18 00:05:00', 'tableC', '2024-03-18');
INSERT INTO `test`.`test_approve`(`approve_no`, `tra_date`, `tablename`, `part_dt`) VALUES ('approve003', '2021-03-18 00:05:00', 'tableC', '2024-03-18');
INSERT INTO `test`.`test_approve`(`approve_no`, `tra_date`, `tablename`, `part_dt`) VALUES ('approve003', '', 'tableC', '2024-03-18');
INSERT INTO `test`.`test_approve`(`approve_no`, `tra_date`, `tablename`, `part_dt`) VALUES ('approve004', '', 'tableB', '2024-03-18');
INSERT INTO `test`.`test_approve`(`approve_no`, `tra_date`, `tablename`, `part_dt`) VALUES ('approve004', '', 'tableA', '2024-03-18');
INSERT INTO `test`.`test_approve`(`approve_no`, `tra_date`, `tablename`, `part_dt`) VALUES ('approve005', '2023-02-18 00:05:00', 'tableD', '2024-03-18');
INSERT INTO `test`.`test_approve`(`approve_no`, `tra_date`, `tablename`, `part_dt`) VALUES ('approve005', '2023-03-18 00:05:00', 'tableD', '2024-03-18');
INSERT INTO `test`.`test_approve`(`approve_no`, `tra_date`, `tablename`, `part_dt`) VALUES ('approve006', '', 'tableC', '2024-03-18');
INSERT INTO `test`.`test_approve`(`approve_no`, `tra_date`, `tablename`, `part_dt`) VALUES ('approve006', '2024-03-18 00:05:00', 'tableB', '2024-03-18');

在这里插入图片描述

  • 根据表名依次排序
SELECT approve_no, tra_date, tablename, part_dt
FROM test_approve
WHERE tablename IN ('tableC', 'tableD', 'tableB', 'tableA')
ORDER BY 
    CASE tablename
        WHEN 'tableC' THEN 1
        WHEN 'tableD' THEN 2
        WHEN 'tableB' THEN 3
        WHEN 'tableA' THEN 4
        ELSE 5  -- 处理其他表名
    END;

在这里插入图片描述

  • tra_date 不为空(‘’)
	SELECT approve_no, tra_date, tablename, part_dt
FROM test_approve
WHERE tablename IN ('tableC', 'tableD', 'tableB', 'tableA')
    AND tra_date <>''
ORDER BY 
    CASE tablename
        WHEN 'tableC' THEN 1
        WHEN 'tableD' THEN 2
        WHEN 'tableB' THEN 3
        WHEN 'tableA' THEN 4
        ELSE 5  -- 处理其他表名
    END;	

在这里插入图片描述

  • 遇到相同的approve_no,取tra_date最大的
SELECT approve_no, tra_date, tablename, part_dt
FROM (
    SELECT approve_no, tra_date, tablename, part_dt,
           ROW_NUMBER() OVER (PARTITION BY approve_no ORDER BY tra_date DESC) AS rn
    FROM test_approve
    WHERE tablename IN ('tableC', 'tableD', 'tableB', 'tableA')
        -- AND tra_date IS NOT NULL
		--AND tra_date <>''
) sub
WHERE rn = 1
ORDER BY 
    CASE tablename
        WHEN 'tableC' THEN 1
        WHEN 'tableD' THEN 2
        WHEN 'tableB' THEN 3
        WHEN 'tableA' THEN 4
        ELSE 5  -- 处理其他表名
    END;
		
  • 相同的approve_no,优先取tableC,tableD,tableB,tableA不为空的tra_date,按表名顺序取,取到了则返回该条数据
SELECT t.approve_no, t.tra_date, t.tablename, t.part_dt
FROM (
    SELECT approve_no, tra_date, tablename, part_dt,
           ROW_NUMBER() OVER (PARTITION BY approve_no ORDER BY 
               CASE WHEN tablename = 'tableC' THEN 1
                    WHEN tablename = 'tableD' THEN 2
                    WHEN tablename = 'tableB' THEN 3
                    WHEN tablename = 'tableA' THEN 4
                    ELSE 5
               END,
               CASE WHEN tra_date <> '' THEN 0 ELSE 1 END,
               tra_date DESC) AS row_number
    FROM test_approve
) AS t
WHERE t.row_number = 1;

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

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

相关文章

江科大STM32学习笔记(上)

STM32F103xx 前言外设篇GPIO输出GPIO位结构GPIO模式外设的GPIO配置查看实战1&#xff1a; 如何进行基本的GPIO输入输出 OLED显示屏及调试Keil的调试模式演示 EXTI外部中断NVIC基本结构EXTI结构代码实战2&#xff1a;如何使用中断和对射式红外传感器&#xff06;旋转编码器 TIM&…

avue 框架(原生)点击的时候状态未过,一直处于加载状态如何解决

方法&#xff1a; //关闭avue自带弹框 this.$refs.crud.$refs.dialogForm.closeDialog();//取消加载状态 loading(false); // 设置loading状态为false&#xff0c;表示加载完成

huawei 华为交换机 配置手工模式链路聚合示例

组网需求 如 图 3-21 所示&#xff0c; SwitchA 和 SwitchB 通过以太链路分别都连接 VLAN10 和 VLAN20 的网络&#xff0c;SwitchA 和 SwitchB 之间有较大的数据流量。 用户希望SwitchA 和 SwitchB 之间能够提供较大的链路带宽来使相同 VLAN 间互相通信。 同时用户也希望能够提…

xAI 发布 Grok-1 — 最大的开源LLM

xAI 发布 Grok-1 — 最大的开源LLM 图片由 Jim Clyde Monge 提供 埃隆马斯克&#xff08;Elon Musk&#xff09;的人工智能公司xAI在Apache 2.0许可下发布了其3140亿参数的专家混合模型Grok-1的权重和架构。 在此之前&#xff0c;马斯克上周一承诺向公众免费提供格罗克。作为…

在基于全志V851se的TinyVision上手动构建 Linux 6.1 + Debian 12 镜像

构建 SyterKit 作为 Bootloader SyterKit 是一个纯裸机框架&#xff0c;用于 TinyVision 或者其他 v851se/v851s/v851s3/v853 等芯片的开发板&#xff0c;SyterKit 使用 CMake 作为构建系统构建&#xff0c;支持多种应用与多种外设驱动。同时 SyterKit 也具有启动引导的功能&a…

Coursera上Golang专项课程3:Concurrency in Go 学习笔记(完结)

Concurrency in Go 本文是 Concurrency in Go 这门课的学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。 文章目录 Concurrency in GoMODULE 1: Why Use Concurrency?Learning Objectives M1.1.1 - Parallel ExecutionM1.1.2 - Von Neumann BottleneckM1.1.3 - Power W…

并发编程之共享带来的问题的详细解析

4.1共享带来的问题 Java代码示例 两个线程对初始值为 0 的静态变量一个做自增&#xff0c;一个做自减&#xff0c;各做 5000 次&#xff0c;结果是 0 吗&#xff1f; static int counter 0; public static void main(String[] args) throws InterruptedException {Thread t…

如何正确从github上下载数据集等内容

文章目录 一、现象&#xff1a;二、解决方案 一、现象&#xff1a; 数据集点击下载没有反应&#xff0c;那需要怎么下载数据集呢&#xff1f; 二、解决方案 输入以下命名行&#xff0c;亲测有效 git clone https://github.com/mymusise/ChatGLM-Tuning.git

CSS 让元素根据内容自适应宽度

一、需求 点击链接跳转&#xff0c;只点击标红区域才跳转&#xff0c;右侧空白区域不要跳转 二、实现 宽度太宽&#xff0c;导致右侧空白区域也加了跳转效果&#xff0c;修改为 将元素的最大宽度设置为其内容所需的宽度。 方法一&#xff1a;建议方式 使用 display: inline…

HTML5语义化元素

在HTML5之前&#xff0c;网站的分布层级有哪些呢&#xff1f; nav&#xff0c;header&#xff0c;main&#xff0c;footer 这样做有一个弊端 我们往往过多的使用div&#xff0c;通过ID或class来区分元素 对于浏览器来说这些元素不够语义化 对于我来说搜索引擎来说&#xff0c;不…

基础:TCP三次握手做了什么,为什么要握手?

1. TCP 三次握手在做些什么 1. 第一次握手 &#xff1a; 1&#xff09;握手作用&#xff1a;客户端发出建立连接请求。 2&#xff09;数据处理&#xff1a;客户端发送连接请求报文段&#xff0c;将SYN位置为1&#xff0c;Sequence Number为x;然后&#xff0c;客户端进入SYN_S…

Halcon 3D算子总结整理

halcon 3D包含以下几个模块&#xff1a; 3D Matching&#xff08;3D匹配&#xff09;3D Object Model&#xff08;3D模型&#xff09;3D Reconstruction&#xff08;3D重构&#xff09;3D Transformations&#xff08;3D转换&#xff09; 1. 3D Matching 1.1 3D Box3D盒查找器…

分布式搜索引擎elasticsearch专栏一

初识elasticsearch 1.1了解ES elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 例如&#xff1a; 在码云搜索代码 在电商网站搜索商品 在百度搜索答案 1.1.2.ELK…

【Linux】日常使用命令(三)

文章目录 **cal 命令****date 命令****bc 命令****Linux下玩小游戏**&#xff1a; cal 命令 功能描述: cal 命令用于显示日历。 常用选项: -3&#xff1a;显示前一个月、当前月和下一个月的日历。-y&#xff1a;显示整年的日历。 常用示例: # 示例 1: 显示当前月的日历 cal# …

AR/MR产品设计(二):如何用一双手完成与虚拟对象的自然交互

AR/MR产品设计&#xff08;二&#xff09;&#xff1a;如何用一双手完成与虚拟对象的自然交互 - 知乎 手是我们与现实世界交互最重要的方式&#xff0c;同样在虚实混合的世界中是最重要的交互方式 在AR/MR/VR的交互中&#xff0c;手势交互会作为XR的重要交互动作&#xff0c;因…

Zookeeper(2)常用命令,ACL权限

文章目录 前言一、zk节点和节点类型节点类型 二、常用命令1.客户端连接2.常用命令help 帮助命令创建节点getsetdeletedeleteall pathstat查看节点的状态setquota增加配额listquota /frame 查看配额delquota删除配额 三、ACL权限控制&#xff1a;1、ZooKeeper权限特性&#xff1…

本地虚拟机平台Proxmox VE结合Cpolar内网穿透实现公网远程访问

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&…

Jenkins Windows关闭跨站请求伪造保护(CSRF)

禁用CSRF保护 为了在Jenkins中禁用CSRF保护&#xff0c;请按照以下步骤操作&#xff1a; 定位Jenkins服务 在Windows搜索栏中输入services.msc&#xff0c;然后按Enter键打开服务。在服务列表中找到Jenkins服务。右键点击Jenkins服务&#xff0c;选择属性 可以进入配置目录 …

求解3、4、6自由度仿射变换矩阵

说明&#xff1a;一开始将目光放在了opencv上&#xff0c;发现只有4、6自由度的仿射变换求解&#xff0c;后来发现skimage十分强大。 注&#xff1a;美中不足的是&#xff0c;skimage的实现没有RANSAC。 function&#xff1a;skimage.transform.estimate_transform() ttypeeu…

TT-100K数据集,YOLO格式

TT-100K数据集YOLO格式&#xff0c;分为train、val和test&#xff0c;其中train中共有6793张图片&#xff0c;val中共有1949张图片&#xff0c;test中共有996张图片。数据集只保留包含图片数超过100的类别。共计46类。