Oracle SQL 选择匹配查询

2023-12-01

我有下面这个表

uid    rid   time_type    date_time

a11    1     1            5/4/2013 00:32:00 (row1)
a43    2     1            5/4/2013 00:32:01 (row2)
a68    2     2            5/4/2013 00:32:02 (row3)
a98    2     1            5/4/2013 00:32:03 (row4)
a45    2     1            5/4/2013 00:32:04 (row5)
a94    1     2            5/4/2013 00:32:05 (row6)
a35    2     2            5/4/2013 00:32:07 (row7)
a33    2     2            5/4/2013 00:32:08 (row8)

我可以使用普通的选择查询来提取数据,使其变为

uid    rid   time_type    date_time

a11    1     1            5/4/2013 00:32:00 (row1)
a94    1     2            5/4/2013 00:32:05 (row6)
a43    2     1            5/4/2013 00:32:01 (row2)
a68    2     2            5/4/2013 00:32:02 (row3)
a98    2     1            5/4/2013 00:32:03 (row4)
a35    2     2            5/4/2013 00:32:07 (row7)
a45    2     1            5/4/2013 00:32:04 (row5)
a33    2     2            5/4/2013 00:32:08 (row8)

逻辑是 time_type 1 需要与下一个对应的 time_type 2 配对以获得相同的 Rid。这可以做到吗?


你可以尝试这个方法:

-- sample of data from the question
SQL> with t1(uid1, rid, time_type, date_time) as
  2  (
  3    select 'a11',  1, 1, '5/4/2013 00:32:00' from dual union all
  4    select 'a43',  2, 1, '5/4/2013 00:32:01' from dual union all
  5    select 'a68',  2, 2, '5/4/2013 00:32:02'  from dual union all
  6    select 'a98',  2, 1, '5/4/2013 00:32:03'  from dual union all
  7    select 'a45',  2, 1, '5/4/2013 00:32:04'  from dual union all
  8    select 'a94',  1, 2, '5/4/2013 00:32:05'  from dual union all
  9    select 'a35',  2, 2, '5/4/2013 00:32:07'  from dual union all
 10    select 'a33',  2, 2, '5/4/2013 00:32:08'  from dual
 11  ) -- the query
 12  select uid1
 13       , rid
 14       , time_type
 15       , date_time
 16    from (select uid1
 17               , rid
 18               , time_type
 19               , date_time
 20               , row_number() over(partition by rid, time_type order by rid) as rn
 21            from t1
 22          )
 23  order by rid, rn, time_type
 24  /

Result:

UID1        RID  TIME_TYPE DATE_TIME
---- ---------- ---------- -----------------
a11           1          1 5/4/2013 00:32:00
a94           1          2 5/4/2013 00:32:05
a43           2          1 5/4/2013 00:32:01
a68           2          2 5/4/2013 00:32:02
a98           2          1 5/4/2013 00:32:03
a35           2          2 5/4/2013 00:32:07
a45           2          1 5/4/2013 00:32:04
a33           2          2 5/4/2013 00:32:08

8 rows selected

SQLFiddle 演示

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

Oracle SQL 选择匹配查询 的相关文章

  • 查找每个客户组的最新帐户

    我有一个包含客户信息的表 每个客户都会分配一个客户 ID 他们的 SSN 他们在开设更多帐户时会保留该 ID 两个客户可能使用同一个帐户 每个客户都有自己的 ID 帐号不按日期排序 我想找到每个客户或客户组的最新帐户 如果两个客户曾经一起使
  • 当 SQL 包含变量时在 pgAdmin 中调试 SQL

    在 SQL Server 中 我可以从应用程序中复制 sql 代码并将其粘贴到 SSMS 中 声明并分配 sql 中存在的变量并运行 是的 很棒的调试场景 例如 请注意 我很生疏 语法可能不正确 declare x as varchar 1
  • 大型数据集的报告工具/查看器

    我有一个数据处理系统 可以根据其处理的数据生成非常大的报告 我所说的 大 是指该系统的 小 执行在转储到 CSV 文件中时会产生大约 30 MB 的报告数据 而大数据集大约为 130 150 MB 我确信有人有更大的想法 大 但这不是重点
  • 如何查看所有者是否有权在 Oracle 中执行存储过程

    我需要验证我的所有者是否有权执行存储过程 但我必须在 sys 表上进行搜索 我可以在哪个表中找到它 谢谢你 与它的名称相反 DBA TAB PRIVS 允许我们查看所有对象的授予权限 而不仅仅是表 select from DBA TAB P
  • 函数参数的自定义惰性求值/短路的语法

    Oracle 定义了几种结构 这些结构利用了看似惰性求值但实际上是短路的功能 例如 x case when 1 2 then count all prime numbers below 100000000 else 2 2 end 函数 c
  • ssis将N个表从源服务器加载到目标服务器的最佳实践

    我需要将 N 个 大约 50 个 表从源数据库加载到目标数据库 每个表都与其他表不同 因此元数据不同 我想我可以使用父 pkg 来调用子 pkg 其中每个子 pkg 都有简单的结构 例如 DFT 来映射要导入的表 1 个子 pkg gt 1
  • 在数据库中有效存储商品位置(用于订购)

    设想 有一个用户拥有的电影数据库 电影显示在一个名为 我的电影 的页面上 电影可以按照用户想要的顺序显示 例如 位置 1 为 搏击俱乐部 位置 3 为 Drive 依此类推 显而易见的解决方案是存储每个项目的位置 例如 电影 ID 用户 I
  • 使用绑定变量动态传递表名和列名

    有没有办法使用绑定变量将列名和表名动态传递给查询 这可以通过使用简单的串联运算符来完成 但我想要一种不同的方法来实现这一目标 EDIT OPEN abc cur FOR Select column name from table name
  • 如何从 tarantool 中选择有限数量的记录,就像 SQL 中的 SELECT LIMIT 一样?

    我想在 Tarantool 空间上执行选择 使用过滤和限制结果 就像我可以使用简单的 SQL 查询一样 SELECT FROM users WHERE age gt 33 LIMIT 1 我怎样才能做到这一点 可以使用 Lua 和 SQL
  • 创建触发器

    如何启动触发器 以便在未付余额超过 50 美元的情况下无人能够租借电影 这里有一个跨行表约束 即你不能只放置一个 OracleCONSTRAINT在列上 因为它们一次只能查看一行中的数据 Oracle 仅支持两种跨 行约束类型 唯一性 例如
  • 在 SQL 中查询行序列

    假设我正在存储events有关联users如下表 其中dt代表事件的时间戳 dt user event 1 1 A 2 1 D 3 1 B 4 1 C 5 1 B 6 2 B 7 2 B 8 2 A 9 2 A 10 2 C 这样我们就可以
  • 从 blob 反序列化 java 对象

    首先 我很抱歉 我要问一些愚蠢的问题 我根本不懂java 也不知道我们是否可以问这样的问题 如果没有 删除我的主题 oracle中有一个存储blob的表 它是二进制的 我能够解码它 输出看起来像这样 sr com epam insure c
  • 如何使用 pgAdmin 恢复 postgreSQL 转储文件?

    我有一个 dmp 文件 想要从中恢复数据库 使用 pgAdmin 我该怎么做 在 PgAdmin3 内 在您正在使用的服务器中创建一个新数据库 右键单击该数据库并选择 恢复 使用 浏览器 按钮选择 dmp 文件 选择 恢复 开始恢复数据库
  • 从 Visual Studio 调试 SQL Server 2005 中的存储过程?

    我在这里和其他地方看到很多令人沮丧的问题 但没有明确的答案 我试图让存储过程进行调试 但没有成功 客户端 VS2005或VS2008 两者都不起作用 当我从存储过程上下文菜单中选择 步入存储过程 时 我在调试窗口中看到 已被用户取消 这就是
  • mysql变量赋值:如何强制赋值顺序?

    由于mysql是一种声明性语言 我找不到强制赋值变量顺序的方法 采取这个查询 SET v1 0 SET v2 0 SELECT v1 v2 FROM MyTable table WHERE v1 v2 is not null AND v2
  • oracle中如何让null等于null

    我有一个变量被传递到我的存储过程 它是一个过滤器 基本上 但是 该字段有时可能为空 如果是 我希望能够检查该字段为空的行 例如 Table A VALUE COLUMN FILTER COLUMN A NULL B NULL C NULL
  • 找出会话的默认 SQL Server 架构

    我需要知道正在执行某些 DDL 的 SQL 脚本中当前的默认架构是什么 我不需要设置架构 但我确实需要将对它的引用 名称或 ID 放入变量中 该脚本可能以 Windows 登录身份运行 因此以下内容还不够 SELECT name defau
  • 使用存储过程访问数据可以提供哪些安全优势?

    我看到一些指南建议您通过存储过程对所有数据访问进行分层来保护数据库 我知道对于 SQL Server 您可以保护表甚至列免受 CRUD 操作的影响 例如 Logged in as sa USE AdventureWorks GRANT SE
  • 将 SQL 中的数据存储在数组中

    我正在尝试将 sql 数据库中的数据存储到数组中 目前我有这个 query mysql query SELECT FROM InspEmail WHERE Company LIKE company while row mysql fetch
  • 使用聚合函数时减少 Athena 扫描的数据量

    以下查询扫描 100 MB 的数据 select from table where column1 val and partition id 20190309 然而 下面的查询扫描了 15 GB 的数据 有超过 90 个分区 select

随机推荐

  • 如何避免在java中创建多个字符串对象?

    我有一个场景 其中我使用查询对象和StringBuffer 我将在其中构建要执行的 SQL 查询 这里是 countQueryBuf append Select count e From clz getSimpleName e 在这里 我的
  • 在轻量级图表中设置 PriceScale 宽度的方法?

    我有两张图表 一张是价格图表 一张是成交量图表 我通过使用各种 API 观察器函数使它们保持同步 创造奇迹 除了价格刻度宽度 我可以使用priceScale right width 调用来获取它 但我没有看到任何设置它的方法 我希望能够保持
  • 将多个变量从 python 脚本传递到 shell 脚本

    我试图通过将 python 变量导出到 shell 脚本来从 python 运行 shell 脚本 而不是直接从用户读取它们 一个关于的问题将数组值作为变量传递给 shell 脚本之前已成功回答并帮助我将数组中的值作为输入变量传递给 she
  • Chrome 扩展程序 - 页面更新两次然后在 YouTube 上删除

    我想做一个小扩展 将一个简单的 html 注入到视频正下方的 YouTube 页面中 如果我简单地访问 YouTube 网址 它就可以正常工作 但是 如果我从 youtube 提供的视频中选择一个视频 那么我的 html 代码会被注入两次
  • 空手道 UI:无法使用友好的定位器找到子元素并寻找一些替代方案

    寻找 findElement findElement 的替代品 例如在 selenium 中 我已经尝试过类似友好定位器中可用的可链接关键字 但没有一个起作用 我想获取 p 的文本 我可以通过使用 XPath 来实现它 但是在 seleni
  • Carrierwave 0.9.0 的自定义错误消息不适用于 Rails 4

    I use carrierwave 0 9 0使用 Rails 4 我正在尝试制作自定义错误消息 经过一番搜索后 我发现了这个answer en errors messages extension white list error My C
  • 在 ActiveRecord 中创建时覆盖 id

    有什么方法可以在创建时覆盖模型的 id 值吗 就像是 Post create id gt 10 title gt Test 将是理想的 但显然行不通 id 只是 attr protected 这就是为什么你不能使用批量分配来设置它 但是 当
  • 外键约束

    由于 FK 约束 两个表相互关联 我试图通过禁用所有触发器来更新这些表 但仍然收到以下错误 UPDATE 语句与 FOREIGN KEY 约束 FK TEST REFERRING REFPHYSI 冲突 冲突发生在数据库 ccdb 表 db
  • Vba 将 CSV 文件导入 Excel

    我正在尝试使用 VBA 代码将 Csv 文件导入 Excel 我希望它能够处理所有 Csv 文件 但事实并非如此 这是我的代码 Sub Input CSV Dim Wb As String Dim Arr Set Wb GetObject
  • 访问父表单

    我知道这个标题可能看起来很愚蠢 想不出更好的东西 抱歉 我有 2 个表单 C 主表单包含第二个表单的实例 有没有办法 从 form2 的实例访问 Form1 的运行实例 入口点 及其属性 每个人都告诉我要学习 OOP 我很久以前就明白了 但
  • 如何编写自定义查询codeigniter

    我有以下查询及其在 MySQL 中的工作 SELECT FROM usr booking WHERE shop id 1 AND services dates 2019 01 02 AND start time BETWEEN 10 00
  • MySQL 自动将字符串转换/转换为数字?

    MySQL 是否自动将字符串转换 转换为数值 这种转换是如何进行的 1234 1234 1abc 1 文本 1 鉴于units id是bigint类型 这个查询将如何解释 SELECT table FROM table WHERE id t
  • Talend:java.lang.UnsatisfiedLinkError:java.library.path 中没有 sapjco3

    我的 jar 和 dll 位于 Talend lib 目录中 路径和类路径已设置 我还下载并安装了 VC 2005 redistribution sp 1 补丁以及 SAP 提供的缺少的 dll 我尝试在 Windows 2003 机器和
  • Gekko 的最佳解决方案

    我想使用 hyperopt 进行超参数优化 但在找到超参数搜索空间的正确公式时遇到问题 我的问题的最佳解决方案是 0 4050 2100 2100 1200 0 0 450 150 我的尝试代码 from gekko import GEKK
  • 将URL请求的内容写入文件

    我正在尝试使用 python 从 php 文件中获取列表并将其保存到文件中 import urllib request page urllib request urlopen http crypto bot hopto org server
  • 检查文本字段是否包含javascript中的字母

    我是 Javascript 新手 我想知道是否有办法检查文本字段输入是否包含数字以外的任何内容 我知道如何在 Java 中做到这一点 但 Javascript 对我来说是完全不同的事情 是的 只是字符串上的标准正则表达式 var str m
  • 清除 Spyder 中的历史记录窗格

    我不知道 Spyder 历史保留了多少行 但是 3个月前执行的命令没有机会被搜索回来再次运行它们 历史记录中的大多数命令只是对 python 文件的调用 重新打开文件来运行它也很容易 启动 IDE 时必须加载这个长列表 从而增加了加载时间和
  • 使用 Python 模拟 Linux 中的击键

    如何在Python中模拟击键 我还想同时按下多个键 就像是 keystroke CTRL F4 or keystroke Shift A 考虑python uinput and evdev 的例子shift a与后者 from evdev
  • python(pygame)中动画速度的问题

    我正在制作一个忍者游戏 其中忍者必须通过跳跃 按空格键 来躲避障碍物 但是跳跃动画太快 忍者无法跳过障碍物 我希望它跳得慢一点 以便让它跳出障碍物 即使按下按键后松开 也能跳到394 y值 然后再下来 请注意 我是初学者 import py
  • Oracle SQL 选择匹配查询

    我有下面这个表 uid rid time type date time a11 1 1 5 4 2013 00 32 00 row1 a43 2 1 5 4 2013 00 32 01 row2 a68 2 2 5 4 2013 00 32