Oracle:如何以最佳方式使用不同的 where 子句进行多次计数?

2024-01-28

我需要对同一表中具有不同 where 子句的行进行计数。以下是我所需的输出

Bu   #A   #B  #C  #D #E #F #G  #H  #J  #K  #L   #M  #N
GB01 267  284 84  45 35 32 458 801 111 899 892  56  99
NL01 132  844 65  28 26 12 627 321 56  681 1062 127 128

每列都有自己的标准,到目前为止我有以下 SQL,但它看起来已经很丑陋并且没有完全返回我需要的内容

SELECT *  FROM (
  SELECT
    c_unit_code,
    COUNT(*) AS ADVICE_EXPORT,
    0 AS CONFIRMATION_EXPORT,
    0 AS ISSUANCE_STANDBY
  FROM EXIMTRX.EPLC_MASTER
  WHERE (CLS_FLG NOT LIKE 'YES' OR CLS_FLG IS NULL) AND (
    form_of_lc LIKE 'IRREVOCABLE' OR
    form_of_lc LIKE 'REVOCABLE' OR
    form_of_lc LIKE 'IRREVOCABLE TRANSFERABLE' OR
    form_of_lc LIKE 'REVOCABLE TRANSFERABLE') AND our_eng LIKE 'ADVICE'
    GROUP BY c_unit_code
UNION
  SELECT
    c_unit_code,
    0 AS ADVICE_EXPORT,
    COUNT(*) AS CONFIRMATION_EXPORT,
    0 AS ISSUANCE_STANDBY
  FROM EXIMTRX.EPLC_MASTER
  WHERE (CLS_FLG NOT LIKE 'YES' OR CLS_FLG IS NULL) AND (
    form_of_lc LIKE 'IRREVOCABLE' OR
    form_of_lc LIKE 'REVOCABLE' OR
    form_of_lc LIKE 'IRREVOCABLE TRANSFERABLE' OR
    form_of_lc LIKE 'REVOCABLE TRANSFERABLE') AND our_eng LIKE 'CONFIRMATION'
    GROUP BY c_unit_code
UNION
  SELECT 
    c_unit_code,
    0 AS ADVICE_EXPORT,
    0 AS CONFIRMATION_EXPORT,
    COUNT(*) AS ISSUANCE_STANDBY
  FROM EXIMTRX.EPLC_MASTER
  WHERE (CLS_FLG NOT LIKE 'YES' OR CLS_FLG IS NULL) AND (
    form_of_lc LIKE 'IRREVOCABLE STANDBY' OR
    form_of_lc LIKE 'REVOCABLE STANDBY' OR
    form_of_lc LIKE 'IRREVOC TRANS STANDBY')
    GROUP BY c_unit_code
);

这就是它返回的内容

GB01    0   0   17
GB01    0   39  0
GB01    80  0   0
NL01    0   0   32
NL01    0   159 0
NL01    341 0   0

有什么想法,我怎样才能实现我所需要的?


  SELECT
    c_unit_code,
    COUNT(case when YOUR_CONDITIONS_FOR_ADVICE_EXPORT then 1 end) AS ADVICE_EXPORT,
    COUNT(case when YOUR_CONDITIONS_FOR_CONFIRMATION_EXPORT then 1 end) AS CONFIRMATION_EXPORT,
    COUNT(case when YOUR_CONDITIONS_FOR_ISSUANCE_STANDBY then 1 end) AS ISSUANCE_STANDBY
  FROM EXIMTRX.EPLC_MASTER
  GROUP BY c_unit_code
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle:如何以最佳方式使用不同的 where 子句进行多次计数? 的相关文章

  • Oracle中“NUMBER”和“NUMBER(*,0)”相同吗?

    在甲骨文中文档 http docs oracle com cd B28359 01 server 111 b28318 datatype htm i22289据说 数字 精度 小数位数 如果未指定精度 则该列将存储给定的值 如果 未指定比例
  • Oracle SQL 从零件创建日期

    我在数据库中有两个日期字段 名为 EFFECTIVE DATE 和 POINT DATE 如何创建新的日期字段 其中日期由 EFFECTIVE DATE 年份 POINT DATE 月份和 POINT DATE 日期组成 我通常会使用 Da
  • C# 中强制关闭 oracle 连接

    我有一个报告窗口 显示从可能长时间运行的 Oracle 存储过程返回的结果 我的问题是 当用户关闭窗口时 与 Oracle 的连接保持打开状态 并且可能长时间运行的报告不会被取消 关闭打开的连接的唯一方法是 DBA 手动终止它们或用户退出整
  • 如何获取 jqGrid 的行数?

    我想知道如何获取 jqGrid 的行数 我在用着rowNum 1所以它显示所有行 我尝试使用 parseInt grid getGridParam records 10 但它总会回归0 谢谢您的帮助 Try grid getGridPara
  • 如何使用 oracle SQL 执行线性插值?

    我正在尝试使用 Oracle 11g 开发中为 11 1 生产中为 11 2 进行数值分析 特别是对具有三列感兴趣的表进行线性插值 时间戳 deviceid 和值 值列保存来自设备 具有 ID deviceid 的数据 这些数据是在时间戳中
  • ORACLe PROCEDURE - AUTHID 仅允许在模式级别

    在尝试通过过程创建表时 我遇到了类似的错误 错误 73 9 PLS 00157 仅在架构级程序上允许 AUTHID PROCEDURE BCKUP AUTHID CURRENT USER AS statusmsg VARCHAR2 400
  • 插入期间违反唯一约束:为什么? (甲骨文)

    我正在尝试在表中创建一个新行 表上有两个约束 一个是关键字段 DB ID 另一个是将值限制为字段 ENV 中的几个之一 当我进行插入时 我没有将关键字段作为我尝试插入的字段之一 但我收到此错误 unique constraint N390
  • 表与视图的性能

    最近开始使用一个数据库 其中的惯例是为每个表创建一个视图 如果您假设表和视图之间存在一对一的映射 我想知道是否有人可以告诉我这样做对性能的影响 顺便说一句 这是在 Oracle 上的 假设问题是关于非物化视图 实际上取决于视图所基于的查询以
  • 如何通过ODBC检索Oracle数据库函数的结果?

    我在通过 ODBC 调用 Oracle 存储函数 而不是过程 时遇到问题 我的函数非常简单 它只是连接两个字符串 我可以通过以下方式调用它 rs c execute SELECT add str yogi bubu FROM dual fo
  • 根据 Oracle SQL 中的营业时间计算时间

    我希望根据工作时间计算任务开始和结束之间的时间 我有以下示例数据 TASK START TIME END TIME A 16 JAN 17 10 00 23 JAN 17 11 35 B 18 JAN 17 17 53 19 JAN 17
  • ActiveRecord oracle_enhanced 适配器无法加载 ruby​​-oci8 库

    rails g scaffold失败 但 oci 脚本和 irb 数据查询有效 无法弄清楚出了什么问题 rails g scaffold table field1 integer field2 string invoke active re
  • Oracle中如何检测4字节UTF8字符

    我们已经看到oracle中存储了4字节的UTF 8字符 我们需要检测特定列中有多少行包含此类字符 尝试了这里给出的建议 UTF 16 补充字符 https stackoverflow com questions 34720830 how t
  • 数百个别名/同义词与数据库表的完全限定名称

    考虑到多个模式中的数百个数据库表 在创建存储过程和视图时 您是否建议使用别名 同义词或完全限定名称 给定一些 schema table 像这样 Orders OrderHeader Production LineThroughput Sal
  • 在 jdbc 程序中使用时,通过 SQL 客户端插入表中的记录未显示

    我使用 SQL 客户端和 JDBC 程序将几行插入到我的表 EMP 中 使用 SQL 客户端插入的记录不会显示在 Java 的输出控制台中 我正在使用 Java 8 和 oracle 11g 数据库来插入和读取数据库 除了通过 SQL 客户
  • 如何从 TOAD for Oracle 执行函数并将结果绑定到数据网格

    我有一个函数 它将 pl sql 对象的 VARRAY 作为其参数之一 如何执行此存储过程并将其返回的结果集绑定到 TOAD for Oracle 中的数据网格 经过一番搜索后 我找到了自己问题的答案 假设您的 varray 类型称为 va
  • 递归 SQL 给出 ORA-01790

    使用 Oracle 11g 第 2 版 以下查询给出 ORA 01790 表达式必须与相应表达式具有相同的数据类型 with intervals time interval AS select trunc systimestamp from
  • 授予用户在查询时使用表索引的什么?

    我想知道当用户从表中查询数据并且该用户已被授予以下权限时 oracle 是否使用索引 grant select on table to user 我想知道是否需要其他拨款才能使用索引 不 没有要求 或能力 授予对索引的访问权限 如果用户可以
  • 使用Powershell访问远程Oracle数据库

    我需要能够连接到我的网络上基于 Windows 7 的 Oracle 服务器 32 位 Oracle XE 我需要连接的机器运行 Windows 7 64 位 两台机器上都安装了 Powershell 我已在 64 位计算机上安装了 Ora
  • REgex从oracle中的字符串中获取数字

    我有以下格式的字符串 阿克拉姆 88 jamesstree 20140418 阿克兰 8 约翰街 20140418 阿克兰 888 johnstreet 20140418 现在我只想检索 88 8 和 888 值 我为此编写了以下查询 SU
  • Oracle TDE 能否保护数据免受 DBA 的侵害?

    甲骨文专家 我的客户想要部署一个必须在数据库中保存信用卡号的应用程序 客户显然很关心安全性 我们特别关注一个令人痛苦的问题 我们如何确保只有具有 业务需要知道 的授权用户才可以访问数据 我们如何保护数据免受 DBA 的侵害 一个明显的解决方

随机推荐

  • Jenkins Pipelines:如何从共享变量脚本使用 withCredentials()

    我想用一个withCredentials 块在共享变量 vars 脚本中而不是直接在 Jenkins 管道中 因为这是特定库的较低级别语义 并且根据具体情况可能需要也可能不需要 然而 withCredentials 或者 至少 它的签名 似
  • 如何在 OpenCV + Visual C++ 中测量对比度

    以前的问题是 如何在 OpenCV 中选择最佳对比度的图像 但根据 Rook 的建议 我正在更改它 我将在我的项目中使用 OpenCV Visual Studio 2010 我只是想知道 OpenCV 如何让这对我来说更容易 我从视频中提取
  • SQL Server - 缺少索引 - 什么会使用索引?

    我正在使用 SQL Server 2008 我们正在使用 DMV 来查找丢失的索引 然而 在创建新索引之前 我试图找出哪个 proc query 需要该索引 我想要获得最多的信息 以便我可以对我的索引做出明智的决定 有时 SQL Serve
  • 将 List 转换为分隔字符串列表 [重复]

    这个问题在这里已经有答案了 可能的重复 从 List 返回字符串的最优雅的方式 https stackoverflow com questions 1334072 most elegant way to return a string fr
  • OpenCV Android 使用最大轮廓的边缘创建新图像

    我能够检测图像中最大的正方形 矩形 绿色 但是 我想将图像中检测到的最大正方形 矩形转换为新图像 存储在新的 Mat 中 这是该函数的返回图像 其上有最大的矩形 正方形 http img153 imageshack us img153 93
  • NodeJS 从后台进程读取 stdin

    我有一个在 Ubuntu 12 04 LTS 下作为服务运行的节点进程 它在 etc init 下有一个配置文件 该系统在连接了条形码阅读器的无头 x86 路由器板上运行 我需要做的是能够读取来自条形码阅读器的输入 其行为类似于 USB 键
  • 在 .NET Core 中使用 SHA-1

    在 dotnet core 中对字符串进行哈希处理时 我得到了奇怪的结果 我发现了这个类似的问题 使用 ASP NET Core 计算 SHA1 https stackoverflow com questions 35363358 comp
  • sqlite,从另一个表中的列更新列

    我目前正在处理更新的查询table1 state从数据中table2 state基于两个表中的城市字段 换句话说 当表 1 和表 2 中的城市字段匹配时 用表 2 中的州更新表 1 我遇到的问题是 当没有城市匹配时 会随机添加一个州 例如爱
  • 真的需要通配符泛型吗?

    例如 public String add Set gt 这是一个列表的列表 该方法可以向其中添加不同组件类型的列表 public void foo List
  • 在后台脚本中设置间隔

    我正在为实时产品开发浏览器扩展 我有一个在manifest json 中设置了 persistent true 的背景页面 我使用的是v2 版本 我使用 setInterval 每秒不断地轮询服务器以获取新数据 后台脚本还会缓存迄今为止收集
  • 使用纯 R 通过 dbplyr 处理日期

    dbplyr 将 dplyr 和基本 R 命令转换为 SQL 以便开发人员可以编写 R 代码并在数据库中执行它 整洁宇宙参考 https dbplyr tidyverse org 在 R 中处理日期时 通常使用 lubridate 包 然而
  • JDK 11 + JUnit 5 + Jigsaw:Junit 无法运行“模块信息”测试

    我尝试在 Gradle 项目中使用 JUnit 5 compileJava and compileTestJava两者都成功了 但是test失败并显示奇怪的消息Could not execute test class module info
  • 从“dragmove”回调中移动图层后,事件丢失

    我有一个移动图层的滚动条 因此该图层在滚动条的 dragmove 回调中移动 这会导致所有绑定事件在移动的图层上断开连接 请看这个小提琴 http jsfiddle net NY4QK 10 http jsfiddle net NY4QK
  • 链接 2 个异步调用(promise API)以串行运行

    这与我发布的问题类似today https stackoverflow com questions 16307652 promise api combining results of 2 asynchronous call 但需要串行链接请
  • 更新 Jupyter Notebook 扩展的正确方法是什么?

    升级 Jupyter Notebook 扩展 例如 RISE ipywidgets 的正确方法是什么 我有一个例程 可以通过运行来更新我的 Python 包pip install upgrade 并且当新的笔记本扩展版本可用时 这也会下载并
  • 如何将日期和时间分成两个元素?

    我制作了一个实时显示日期和时间的对象 我想知道如何将时间部分与日期分开 以便我可以将它放在自己的 HTML 元素中 以便我可以对其应用不同的样式 我对 JavaScript 不太熟悉 而且我发现使用日期对象非常复杂 LiveDateTime
  • 将最近的提交移至不同的现有分支

    我刚刚对功能分支进行了一些更改 但我意识到我在错误的分支上 如何获取我所做的最后一次提交 并将其移动到另一个已经存在的分支 我还没有推任何东西 我见过一些类似的问题 但它们都涉及创建一个新分支 并且他们所做的所有硬头重置都令人恐惧 git
  • 如何减少简单选择查询的响应时间?

    MarketPlane表包含超过 6000 万行 当我需要特定日期的飞机总数时 我执行此查询需要 7 分钟以上 我怎样才能减少这个时间 SELECT COUNT primaryKeyColumn FROM MarketPlan WHERE
  • jspc-maven-plugin 未执行?

    我在我的 pom xml 中添加了这样的 jspc 插件
  • Oracle:如何以最佳方式使用不同的 where 子句进行多次计数?

    我需要对同一表中具有不同 where 子句的行进行计数 以下是我所需的输出 Bu A B C D E F G H J K L M N GB01 267 284 84 45 35 32 458 801 111 899 892 56 99 NL