SQL表连接中如何根据条件不同关联不同的字段

2023-11-01

  在实际的项目开发中,对于数据库的连接条件是根据项目的需求来关联的,今天博主遇到了这样的一个问题:在数据库中的某张表中,有资产组织、所有权、使用部门三个字段,现在需要给定一个单位,根据实际的需求,需要关联这三个维度,举个例子:现在需要查找单位为A并且是资产组织的所有信息,但是查完之后又想查找单位为A并且是使用部门的所有信息,那么根据这样一个需求,有一个简单的写法,sql如下:

select '${param('分析维度')}' AS '分析维度',
       org.id,
       pe.pk_org,
       pe.pk_category, 
       org.name AS '单位',
       pe.pk_ownerunit AS '所有权',
       pe.pk_usedorg AS '使用单位',
       pcg.category_name AS '类别',

      
FROM iuap_apdoc_basedoc.org_orgs org
LEFT JOIN amc_ambd.pam_equip pe ON  org.id = CASE
    WHEN '${param('分析维度')}' = '资产组织' THEN pe.pk_org 
    WHEN '${param('分析维度')}' = '所有权' THEN pe.pk_ownerunit
    WHEN '${param('分析维度')}' = '使用单位' THEN pe.pk_usedorg
    ELSE pe.pk_org 
    END

使用case when end 写法,每一个case代表一种场景,根据场景的不同,选择不同的关联字段即可解决。

SQL扩展

使用SUBSTRING_INDEX(str,delim,count)进行字段的截取

string:用于截取目标字符串的字符串。

delim:分隔符,string存在且用于分割的字符,比如“,”、“.”等。

count:序号,为非0整数。若为整数则表示从左到右数,若为负数则从右到左数。

在上表中有一个资产类别字段,该字段格式为“一级类别-二级类别-三级类别”,例如:固定资产-行政设备-办公家具-办公桌,现在要截取该资产类别的二级类别,那么使用SUBSTRING_INDEX()就能更方便的进行截取,sql如下:

select SUBSTRING_INDEX(SUBSTRING_INDEX(pcg.category_name,'-',2),'-',-1) AS '二级类别'
FROM amc_ambd.pam_equip pe

解释:先截取该资产类别从边开始到第个以“-”为分隔符结尾的子字符串,为“固定资产-行政设备”;

再截取该子字符串从边开始到第个以“-”为分隔符结尾的子字符串,截取结果为“行政设备”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL表连接中如何根据条件不同关联不同的字段 的相关文章

  • MySQL JOIN 滥用?情况会变得有多糟糕?

    我读了很多关于关系数据库的文章 在每个 SELECT 上使用许多 JOIN 语句 但是 我一直想知道滥用这种方法从长远来看是否会出现任何性能问题 例如 假设我们有一个users桌子 我通常会添加 最常用 的数据 而不是进行任何额外的联接 例
  • 支持 >65k 行的 Excel VBA SQL 驱动程序

    在 Excel 2010 中通过 VBA 查询 Excel 数据时 我遇到一个有趣的问题 我正在使用这些驱动程序连接到 xls 或 xls x m 文件 Sub OpenCon ByRef theConn As Connection ByV
  • 如何从表中检索特定列 --- JPA 或 CrudRepository?我只想从用户表中检索电子邮件列

    用户模型 Entity Table name user uniqueConstraints UniqueConstraint columnNames email public class User implements Serializab
  • jdbc4.MySQLSyntaxErrorException:数据库中不存在表

    我正在使用 SpringBoot 开发一个网络应用程序 这是我的application properties文件来指定访问数据库的凭据 spring datasource driverClassName com mysql jdbc Dri
  • SQL Server 中的 FIFO 查询

    我正在构建一个库存管理应用程序c with SQL server 我想做一个FIFO从我的表查询 我以可变价格购买了相同的产品 之后我卖掉了其中一些 我想根据 先进先出 进行查询BatchDate柱子 所以我想通过PurchasePrice
  • 是否可以从子查询中获取多个值?

    有没有办法让子查询在oracle db中返回多列 我知道这个特定的sql会导致错误 但它很好地总结了我想要的 select a x select b y b z from b where b v a v from a 我想要这样的结果 a
  • 更改表添加列并在同一条件 IF 语句中更新新列

    我正在尝试添加列并在同一 if 语句中更新它 BEGIN TRAN IF NOT EXISTS SELECT 1 FROM sys columns WHERE Name N Code AND Object ID Object ID N Te
  • 查看Jasper报告执行的SQL

    运行 Jasper 报表 其中 SQL 嵌入到报表文件 jrxml 中 时 是否可以看到执行的 SQL 理想情况下 我还想查看替换每个 P 占位符的值 Cheers Don JasperReports 使用 Jakarta Commons
  • 无法连接到 MAMP 上的 phpMyAdmin

    我收到此错误消息 MySQL 说道 无法连接 设置无效 phpMyAdmin 尝试连接 MySQL 服务器 但服务器拒绝连接 您应该检查配置中的主机 用户名和密码 并确保它们与 MySQL 服务器管理员提供的信息相对应 用户和通行证是默认的
  • 需要在 SQL Server 中透视字符串值

    我有一个包含值的表 描述为 Occupation String Name String Developer A Developer B Designer X Coder Y Coder Z 我需要数据透视格式的值 Designer Deve
  • 多边形内的 SQL 地理点在 STIntersect 上不返回 true(但使用 Geometry 返回 true)

    我不想仅仅为了在 STIntersect 中返回 true 而将地理数据转换为几何图形 下面是 SQL 中的代码 DECLARE point GEOGRAPHY GEOGRAPHY Point 1 1 4326 DECLARE polygo
  • MySQL NOT IN 来自同一个表中的另一列

    我想运行 mysql 查询来选择表中的所有行films其中的值title该列不存在于另一列的所有值中的任何位置 collection 这是我的表格的简化版本 其中包含内容 mysql gt select from films id titl
  • Google Cloud SQL 上的故障转移如何运作?

    我打算将 PHP 应用程序 从 Google Cloud Platform 外部的服务器 连接到 Google Cloud SQL 我想知道如何设计应用程序以正确地对其数据库进行故障转移 根据manual https cloud googl
  • 随着时间的推移累积(不重叠)——技术?

    我正在尝试找到一种更好的方法来制作水晶报告 其他人的 按组添加不重叠的时间 这显然是一个古老的问题 有没有一种技术可以得到 调整每条记录的 开始 结束 时间 以消除共同 重叠时间 亚组内 使用直接 SQL 尽管我发现我可以执行 CTE 假设
  • MySQL:@@ 是什么意思?

    我正在阅读本页上的 MySQL 文档 http dev mysql com doc refman 5 1 en set statement html http dev mysql com doc refman 5 1 en set stat
  • 使用 DISTINCT 进行查询需要很长时间

    我正在使用 Microsoft Access 2003 我的项目中的一个表单需要很长时间才能向用户显示 这是适用的查询 SELECT DISTINCT tb KonzeptDaten DFCC tb KonzeptDaten OBD Cod
  • 研究MySQL、SQLite源码了解RDBMS实现[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道实现数据库是一个很大的话题 但我想通过研究数据库系统的源代码来基本了解数据库系统的工作原理 例如
  • 基本的多对多sql选择查询

    我认为这应该很容易 但它却在逃避我 我的帐户和帐户组之间存在多对多关系 一个帐户可以位于零个或多个组中 因此我使用标准连接表 Accounts ID BankName AcctNumber Balance AccountGroups ID
  • SQL Server:如果存在会大大减慢查询速度

    正在使用SQL Server 2012 我找到了一些关于查询优化的主题 并将 EXISTS 与 COUNT 进行比较 但我找不到这个确切的问题 我有一个看起来像这样的查询 select from tblAccount as acc join
  • 使用 PHP 将 latin1_swedish_ci 转换为 utf8

    我有一个数据库 里面充满了类似的值 Dhaka 应该是 Dhaka 因为我在创建数据库时没有指定排序规则 现在我想修复它 我无法从最初获取数据的地方再次获取数据 所以我在想是否可以在 php 脚本中获取数据并将其转换为正确的字符 我已将数据

随机推荐

  • 笔记本安装centos之后,合上盖还正常运行设置

    修改如下配置 让其生效即可 具体操作 vim etc systemd logind conf 将上图所示 HandleLidSwitch suspend 修改为lock 并将起前面 号去掉 重启配置让其生效systemctl restart
  • IMX6学习记录(12)-通过系统接口点亮LED

    上面是我的微信和QQ群 欢迎新朋友的加入 1 硬件 硬件上 led连接的IO是GPIO5 PIN8 高电平熄灭 低电平点亮 2 export引脚 GPIO5 PIN8的在gpio上的位置是5 32 8 136 cd sys class gp
  • 大搜索时代!SEO如何挖掘关键词?方法都在这里!-搜嗖工具箱

    做SEO关键词挖掘是关键 好的关键词可以帮助您的网站在搜索引擎中获得更好的排名 要问都有哪些挖掘关键词的方法 那就太多了 下边就列举几个我常用的方式吧 方法一实用工具挖掘关键词 我们知道有很多关键词在线挖掘工具可以帮助我们快速实现关键词挖掘
  • 这款开源神器,让你能在 iPad 上随心所欲写代码!

    注意 这篇文章就是在劝你买iPad Pro 手动狗头 最近 苹果推出了新的iPad Pro 号称生产力工具 然而对程序员来说 不能写代码 就难以称得上生产力 虽然也有一些优秀的写代码App可供程序员使用 但本着能不花钱就不花钱的原则 还是可
  • epoll实现原理

    epoll的使用 epoll只有以下的三个系统函数调用 epoll create epoll ctl和epoll wait int epoll create int size 其中参数 1 size指明了生成描述符的最大范围 该函数返回一个
  • Java_.jar .war .ear区别

    jar 全称 java archive 包含 class properties文件 是文件封装的最小单元 部署文件 application client xml 级别 小 war 全称 web archive 包含 Servlet JSP页
  • es搜索引擎

    ES的优势及使用场景 ES的功能及使用简介 简介 Elaticsearch简称为ES 是一个开源的可扩展的分布式的全文检索引擎 它可以近乎实时的存储 检索数 据 本身扩展性很好 可扩展到上百台服务器 处理PB级别的数据 ES使用Java开发
  • switch删除用户显示无法连接服务器,switch无法连接互联网怎么办 NS无法联机联网详细解决办法...

    switch最经常碰到的问题是就是联网的问题 很多玩家会遇到无法联网以及联机对战的情况 那么遇到这样的问题该怎么办呢 下面就来为大家分享一下解决办法 可能的原因 网络NAT类型不是创建与其他用户的对等连接 Peer to Peer P2P
  • 软件测试相关试题知识点

    软件测试相关试题 1 下面不属于软件测试步骤的是 A 集成测试 B 回归测试 C 确认测试 D 单元测试 解析 B 回归测试是指修改旧代码后重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误 因此不是软件测试的步骤 2 Junit
  • MAC下jupyter的安装及使用

    一 安装 在终端输入以下命令 conda install jupyter notebook 运行结果如下 Collecting package metadata done Solving environment done Package P
  • date时间加减(linux,aix)

    需求是这样的 有一个在日志中的时间 格式化为 Y m d H M S格式的 那现在想比较这个时间与当前时间差值是否大于一天 这个应该怎么做呢 设计到日期的减法运算 首先先man date来看一下用法吧 DATE 1 User Command
  • java排序之快排

    这篇文章来谈谈快排 最近有一种感觉 只要有规律可循的代码 分解成为两部分以后效率就会提高很多 代码思想如下 这个代码写的是快排 快排最主要的思维就是寻找一个分界值 大的放在一边 小的放在一边 然后递归分别处理大的和小的 这里需要注意的是我们
  • 拓扑 排序

    拓扑排序的适用范围 有向无环图 DAG 实际上拓扑排序不止可以用来求拓扑序 在 D A G DAG DAG 中 我们即可以用 t o
  • c++11 智能指针 (std::shared_ptr)(一)

    定义于头文件
  • 有趣的数据结构算法14——二叉树的构建

    有趣的数据结构算法14 二叉树的构建 什么是树 什么是二叉树 二叉树特点 二叉树内的常用概念 二叉树的实现 整体实现代码 GITHUB下载连接 每天学习一点点 我就能变成马云哥哥的打工仔 什么是树 树状图是一种数据结构 它是由n n gt
  • 对一句话木马的初步认识

    在之前只停留在怎么使用一句话木马的层次上 但不懂原理总觉得不太踏实 今天稍微查询了一些资料 个人对一句话有了一些了解 我们分析一下最简单的一句话木马 能理解一句话木马也得益于最近刚好了解了一下php语音 P O S T
  • 面板模型在python上的实现

    背景 有一份城镇GDP相关的数据 共有9个地区分别11年 2008 2018 的数据 无缺失数据 数据中包括X1 城乡居民年末储蓄存款 X2 年末常住人口 X3 城镇化率 X4 教育支出 共4个自变量 因变量为GDP 现希望研究4个自变量对
  • js的array.some()和array.every()

    一 检测数组 ages 的所有元素是否都大于等于 18 var ages 32 33 16 40 function checkAdult age return age gt 18 function myFunction document g
  • STM32F407ZGT6实现OLED显示屏

    1 调试工具 2 OLED简介 3 硬件电路 接线 本文采用7脚 倘若采用4脚 资料代码啥的可以在江科大B站视频下载 资料下载 https pan baidu com s 1SqKyKr5Fsl 9gBJi8aVxTw 提取码 8kzh 链
  • SQL表连接中如何根据条件不同关联不同的字段

    在实际的项目开发中 对于数据库的连接条件是根据项目的需求来关联的 今天博主遇到了这样的一个问题 在数据库中的某张表中 有资产组织 所有权 使用部门三个字段 现在需要给定一个单位 根据实际的需求 需要关联这三个维度 举个例子 现在需要查找单位