1、需求背景,出货报告要实现叠板假层的处理,需求如下

表ID,layer,MEDIUM数据如下
第一种情况,layer有K的

IDlayerMEDIUM
1L1-L230
2L2-L340
3L3-K120
4K1-L410
5L4-L520
6L5-L630
7L7-K210
8K2-L811
9L8-L910
10L9-L1030

实现layer有K1的,L3-L4,并合计 MEDIUM列等于30,layer有K2的,L7-L8,并合计 MEDIUM列等于21

layerMEDIUM
L1-L230
L2-L340
L3-L430
L4-L520
L5-L630
L7-L821
L8-L910
L9-L1030

第二种情况,layer有K的

IDlayerMEDIUM
1L1-L230
2L2-L340
3L3-K120
4K1-K210
5K2-L420
6L4-L530
7L5-L610

实现layer有K的,L3-L4,并合计 MEDIUM列等于50=(20+10+20)

layerMEDIUM
L1-L230
L2-L340
L3-L450
L4-L530
L5-L610

处理思路

该方案通过递归CTE构建完整路径链,自动处理单K节点(如L3-K1-L4)和多K连续节点(如L3-K1-K2-L4)两种情况,输出合并后的层级路径及MEDIUM总和。

执行示例:

第一种情况输出:

L3-L4 | 30
L7-L8 | 21

第二种情况输出:

L3-L4 | 50 (20+10+20)

关键特性:

动态节点识别:自动检测所有K节点(K1/K2等)15
路径完整性检查:确保合并后的路径始终以非K节点结尾68
最短路径优先:当存在多条合并路径时选择最短链路

WITH 表达式


WITH split_data AS (SELECT ID,layer,MEDIUM,REGEXP_SUBSTR(layer, '[^-]+') AS start_node,REGEXP_SUBSTR(layer, '[^-]+$') AS end_nodeFROM layer_data
),
path_chains AS (-- 基础路径(起始节点非K的路径)SELECT ID, layer, MEDIUM,start_node AS chain_start,end_node AS chain_end,CAST(layer AS VARCHAR2(4000)) AS full_path,MEDIUM AS total_medium,1 AS path_levelFROM split_data WHERE start_node NOT LIKE 'K%'UNION ALL-- 递归连接后续路径SELECT d.ID, d.layer, d.MEDIUM,p.chain_start,d.end_node AS chain_end,p.full_path || '→' || d.layer,p.total_medium + d.MEDIUM,p.path_level + 1FROM path_chains pJOIN split_data d ON p.chain_end = d.start_nodeWHERE p.chain_end NOT LIKE 'L%'  -- 仅连接K节点或中间节点
),
k_merged AS (SELECT chain_start || '-' || chain_end AS combined_layer,total_medium,ROW_NUMBER() OVER (PARTITION BY chain_start, chain_end ORDER BY path_level) AS rnFROM path_chainsWHERE chain_end LIKE 'L%'  -- 最终结束节点需为非K节点AND full_path LIKE '%K%'   -- 必须包含K节点
)
SELECT combined_layer,total_medium
FROM k_merged
WHERE rn = 1  -- 取最短路径合并结果
ORDER BY combined_layer;

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

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

相关文章

Kubernetes 服务发布基础学习

一、Service 概述(一)Service 的定义Service 是 Kubernetes 中的一种抽象概念,用于定义一组 Pod 以及访问这组 Pod 的策略。其核心作用是将一组 Pod 封装为一个虚拟服务,并为客户端提供统一的入口,从而实现服务的负载均…

【零基础学AI】第21讲:TensorFlow基础 - 神经网络搭建入门

本节课你将学到理解什么是TensorFlow,为什么要用它 掌握TensorFlow安装和基本操作 学会搭建第一个神经网络 完成手写数字识别项目 开始之前 环境要求 Python 3.8至少4GB内存网络连接(用于下载数据集) 前置知识 第1-8讲:Python基础…

STM32 串口USART通讯驱动

前言 本篇文章对串口Usart进行讲解,为后面的esp8266和语音模块控制打好基础。 1.串口USART USART(Universal Synchronous/Asynchronous Receiver/Transmitter,通用同步 / 异步收发器) 是一种常见的串行通信接口,广泛应…

pytorch版本densenet代码讲解

DenseNet 模型代码详解 下面是 DenseNet 模型代码的逐部分详细解析: 1. 导入模块 import re from collections import OrderedDict from functools import partial from typing import Any, Optionalimport torch import torch.nn as nn import torch.nn.functional…

前端常见设计模式深度解析

# 前端常见设计模式深度解析一、设计模式概述 设计模式是解决特定问题的经验总结,前端开发中常用的设计模式可分为三大类: 创建型模式:处理对象创建机制(单例、工厂等)结构型模式:处理对象组合(…

React 学习(3)

核心API——React.creatElement()方法优点:将创建元素、添加属性和事件、添加内容和子元素等使用原生dom需要进行复杂操作才能实现的功能集成在一个API中。1.该方法接收三个参数第一个是要创建的元素的名称(小写是因为如果,大写开头会被react…

倾斜摄影无人机飞行航线规划流程详解

在倾斜摄影测量项目中,航线规划的严谨性直接决定了最终三维模型的质量与完整性。照片覆盖不全、模型空洞、纹理模糊或分辨率不达标等问题,往往源于规划阶段对关键细节的疏忽。本文将系统梳理倾斜摄影无人机航线规划的核心流程与关键要点,旨在…

Minio大文件分片上传

一、引入依赖 <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.3.3</version></dependency> 二、自定义Minio客户端 package com.gstanzer.video.controller;import com.google.common.c…

Jenkins 插件深度应用:让你的CI/CD流水线如虎添翼 [特殊字符]

Jenkins 插件深度应用&#xff1a;让你的CI/CD流水线如虎添翼 &#x1f680; 嘿&#xff0c;各位开发小伙伴&#xff01;今天咱们来聊聊Jenkins的插件生态系统。如果说Jenkins是一台强大的引擎&#xff0c;那插件就是让这台引擎发挥最大威力的各种零部件。准备好了吗&#xff1…

密码学(斯坦福)

密码学笔记 \huge{密码学笔记} 密码学笔记 斯坦福大学密码学的课程笔记 课程网址&#xff1a;https://www.bilibili.com/video/BV1Rf421o79E/?spm_id_from333.337.search-card.all.click&vd_source5cc05a038b81f6faca188e7cf00484f6 概述 密码学的使用背景 安全信息保护…

代码随想录算法训练营第四十六天|动态规划part13

647. 回文子串 题目链接&#xff1a;647. 回文子串 - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 思路&#xff1a; 以dp【i】表示以s【i】结尾的回文子串的个数&#xff0c;发现递推公式推导不出来此路不通 以dp【i】【j】表示s【i】到s【j】的回…

基于四种机器学习算法的球队数据分析预测系统的设计与实现

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍项目展示随机森林模型XGBoost模型逻辑回归模型catboost模型每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 本项目旨在设计与实现…

http、SSL、TLS、https、证书

一、基础概念 1.HTTP HTTP (超文本传输协议) 是一种用于客户端和服务器之间传输超媒体文档的应用层协议&#xff0c;是万维网的基础。 简而言之&#xff1a;一种获取和发送信息的标准协议 2.SSL 安全套接字层&#xff08;SSL&#xff09;是一种通信协议或一组规则&#xf…

在 C++ 中,判断 `std::string` 是否为空字符串

在 C 中&#xff0c;判断 std::string 是否为空字符串有多种方法&#xff0c;以下是最常用的几种方式及其区别&#xff1a; 1. 使用 empty() 方法&#xff08;推荐&#xff09; #include <string>std::string s; if (s.empty()) {// s 是空字符串 }特性&#xff1a; 时间…

【Harmony】鸿蒙企业应用详解

【HarmonyOS】鸿蒙企业应用详解 一、前言 1、应用类型定义速览&#xff1a; HarmonyOS目前针对应用分为三种类型&#xff1a;普通应用&#xff0c;游戏应用&#xff0c;企业应用。 而企业应用又分为&#xff0c;企业普通应用和设备管理应用MDM&#xff08;Mobile Device Man…

Linux云计算基础篇(8)

VIM 高级特性插入模式按 i 进入插入模式。按 o 在当前行下方插入空行并进入插入模式。按 O 在当前行上方插入空行并进入插入模式。命令模式:set nu 显示行号。:set nonu 取消显示行号。:100 光标跳转到第 100 行。G 光标跳转到文件最后一行。gg 光标跳转到文件第一行。30G 跳转…

Linux进程单例模式运行

Linux进程单例模式运行 #include <iostream> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int write_pid(const cha…

【Web 后端】部署服务到服务器

文章目录 前言一、如何启动服务二、挂载和开机启动服务1. 配置systemctl 服务2. 创建server用户3. 启动服务 总结 前言 如果你的后端服务写好了如果部署到你的服务器呢&#xff0c;本次通过fastapi写的服务实例&#xff0c;示范如何部署到服务器&#xff0c;并做服务管理。 一…

国产MCU学习Day5——CW32F030C8T6:窗口看门狗功能全解析

每日更新教程&#xff0c;评论区答疑解惑&#xff0c;小白也能变大神&#xff01;" 目录 一.窗口看门狗&#xff08;WWDG&#xff09;简介 二.窗口看门狗寄存器列表 三.窗口看门狗复位案例 一.窗口看门狗&#xff08;WWDG&#xff09;简介 CW32F030C8T6 内部集成窗口看…

2025年文件加密软件分享:守护数字世界的核心防线

在数字化时代&#xff0c;数据已成为个人与企业的宝贵资产&#xff0c;文件加密软件通过复杂的算法&#xff0c;确保信息在存储、传输与共享过程中的保密性、完整性与可用性。一、文件加密软件的核心原理文件加密软件算法以其高效性与安全性广泛应用&#xff0c;通过对文件数据…