Oracle查询基础(oracle查询sid)
mhr18 2024-09-15 21:34 21 浏览 0 评论
这篇文章的内容主要是Oracle基础查询的内容,以及一些常用的查询技巧,比如开窗函数的应用。
--(1)全表查询
--(2)查询表中固定列
--(3)左连接查询 left join 表名 on 关联条件
--(4)where条件查询
--(5)逻辑符 and or
--(6)nvl()函数 select nvl(CTRANSPORTTYPEID,'测试nvl用法') from so_saleorder nvl(dr,0) = 0
--(7)内连接
--(8)去除重复项
--(9)对查询结果进行排序
--(10)分组查询
--(11)开窗
--(12)count() 以及count()开窗
--(13)常数查询
--(14)dual表
--查询销售订单主表 主表主键 csaleorderid
select csaleorderid,vbillcode from so_saleorder where csaleorderid = '10011A10000000021LEC'
--查询销售订单子表 主表主键 csaleorderid
select csaleorderid,csaleorderbid,cmaterialid from so_saleorder_b where csaleorderid = '10011A10000000021LEC'
--1.NC中同一张表主表和子表的连接关系(关联字段) 主表表名.主表主键 = 子表表名.子表中存主表主键值的字段名
--2.多张表查询 左连接 右连接 内连接 全连接
--(1)左连接:左表为基础 关键字 left join ... on
select a.vbillcode as 单据号 from
so_saleorder a
left join so_saleorder_b b on a.csaleorderid = b.csaleorderid
--左连接查询销售订单业务员姓名
--(1)查询销售订单业务员
select cemployeeid from so_saleorder --查询结果分析:销售订单主表中,CEMPLOYEEID字段存的是业务员(人员基本信息)主键值
--(2)左连接关联销售订单主表和人员基本信息表
select a.vbillcode as 单据号,b.name as 业务员
from so_saleorder a
left join bd_psndoc b
on a.CEMPLOYEEID = b.pk_psndoc
--查询销售订单子表中对应的物料编码
select cmaterialvid from so_saleorder_b
select a.cmaterialvid ,b.code as 物料编码,b.name as 物料名称
from so_saleorder_b a
left join bd_material b
on a.cmaterialvid=b.pk_material
--查询销售订单主表单据号以及对应子表的物料信息
select a.VBILLCODE as 单据号,c.code as 物料编码, c.name as 物料名称,d.name as 业务员
from SO_SALEORDER a
left join SO_SALEORDER_B b
on a.csaleorderid=b.csaleorderid
left join BD_MATERIAL c
on b.cmaterialvid=c.pk_material
left join bd_psndoc d
on a.CEMPLOYEEID=d. pk_psndoc
--NC中做报表,必须要有的两个字段:pk_group pk_org
select a.VBILLCODE as vbillcode,c.code as matcode, c.name as matname,d.name as psnname,a.pk_group as pk_group,a.pk_org as pk_org
from SO_SALEORDER a
left join SO_SALEORDER_B b
on a.csaleorderid=b.csaleorderid
left join BD_MATERIAL c
on b.cmaterialvid=c.pk_material
left join bd_psndoc d
on a.CEMPLOYEEID=d. pk_psndoc
--条件查询 where关键字 位于from关键字之后 A1-619717
select a.VBILLCODE as 单据号,c.code as 物料编码, c.name as 物料名称,d.name as 业务员
from SO_SALEORDER a
left join SO_SALEORDER_B b
on a.csaleorderid=b.csaleorderid
left join BD_MATERIAL c
on b.cmaterialvid=c.pk_material
left join bd_psndoc d
on a.CEMPLOYEEID=d. pk_psndoc
where c.code = 'A1-619717' and d.name = '杨建军'
--逻辑符 and or
select a.VBILLCODE as 单据号,c.code as 物料编码, c.name as 物料名称,d.name as 业务员
from SO_SALEORDER a
left join SO_SALEORDER_B b
on a.csaleorderid=b.csaleorderid
left join BD_MATERIAL c
on b.cmaterialvid=c.pk_material
left join bd_psndoc d
on a.CEMPLOYEEID=d. pk_psndoc
where c.code = 'A1-619717' or d.name = '杨建军'
--NC中的逻辑删除 dr = 1 视为删除
select vbillcode from so_saleorder where dr = 1
select vbillcode from so_saleorder where nvl(dr,0) = 0
--以左表为基础
select b.name as 业务员, a.vbillcode as 单据号
from bd_psndoc b
left join so_saleorder a
on a.CEMPLOYEEID = b.pk_psndoc
select b.name as 业务员, a.vbillcode as 单据号
from bd_psndoc b
right join so_saleorder a
on a.CEMPLOYEEID = b.pk_psndoc
--SO20190324000009 SO201903240006 SO201903240000008
--内连接 笛卡尔积 两边必须同时有才能被查出来
select a.vbillcode,b.name
from so_saleorder a,bd_psndoc b
where a.CEMPLOYEEID = b.pk_psndoc
--全连接 full join
--物料和安全库存
--去除重复项 关键字 distinct
select distinct b.name
from so_saleorder a left join bd_psndoc b
on a.CEMPLOYEEID = b.pk_psndoc
--对查询结果进行排序 order by 关键字 asc 升序 desc 降序 order by 字段名 asc/desc
select a.vbillcode ,b.name
from so_saleorder a left join bd_psndoc b
on a.CEMPLOYEEID = b.pk_psndoc
where nvl(a.dr,0) = 0
order by 1 desc,2 desc
--分组查询 关键字 group by 分组查询是和统计函数一起使用
select a.vbillcode as 单据号,c.name ,sum(b.norigtaxmny),avg(b.norigtaxmny)
from
so_saleorder a
left join so_saleorder_b b on a.csaleorderid = b.csaleorderid
left join bd_psndoc c on a.CEMPLOYEEID = c.pk_psndoc
where nvl(a.dr,0) = 0
group by a.vbillcode,c.name
order by 1
--开窗函数
create or replace view v_cost
as
select '0101' as date1, 100 as price from dual
union all
select '0102' as date1, 200 as price from dual
union all
select '0103' as date1, 300 as price from dual
select date1,price,sum(price) over(order by date1) from v_cost
--count()求数据条数总和
select count(*) from so_saleorder where nvl(dr,0) = 0
--每个销售订单表体有多少条数据
select distinct a.vbillcode as 单据号,c.name ,count(*) over(partition by a.vbillcode)
from
so_saleorder a
left join so_saleorder_b b on a.csaleorderid = b.csaleorderid
left join bd_psndoc c on a.CEMPLOYEEID = c.pk_psndoc
where nvl(a.dr,0) = 0
order by 1
--生成序号 rownum
select distinct a.vbillcode as 单据号,c.name ,count(*) over(partition by a.vbillcode),rownum
from
so_saleorder a
left join so_saleorder_b b on a.csaleorderid = b.csaleorderid
left join bd_psndoc c on a.CEMPLOYEEID = c.pk_psndoc
where nvl(a.dr,0) = 0
order by rownum
--rank 排序
select * from (
select distinct a.vbillcode as 单据号,c.name ,count(*) over(partition by a.vbillcode),rownum as rn,rank() over(order by a.vbillcode) as rk
from
so_saleorder a
left join so_saleorder_b b on a.csaleorderid = b.csaleorderid
left join bd_psndoc c on a.CEMPLOYEEID = c.pk_psndoc
where nvl(a.dr,0) = 0
order by rownum
)
order by rk,rn
select * from (
select distinct a.vbillcode as 单据号,c.name ,count(*) over(partition by a.vbillcode),rownum as rn,rank() over(
partition by a.vbillcode order by b.cmaterialid) as rk
from
so_saleorder a
left join so_saleorder_b b on a.csaleorderid = b.csaleorderid
left join bd_psndoc c on a.CEMPLOYEEID = c.pk_psndoc
where nvl(a.dr,0) = 0
order by rownum
)
order by 1,rk
--union all 关键字 列数量一致,每一列数据类型对应
select vbillcode from so_saleorder
union all
select vbillcode from po_order
union all
select vbillcode from mm_mo
select distinct x.pk_material,y.pk_org,y.pk_group,y.code,y.name,z.pk_materialstock from (
select distinct cinventoryvid as pk_material from to_bill_b where nvl(dr,0) = 0
union all
select distinct cbmaterialvid as pk_material from mm_wr_product
where mm_wr_product.pk_org <> mm_wr_product.vbdef7 and nvl(dr,0) = 0
union all
select distinct F.cmaterialvid as pk_material from ic_saleout_h E
left join
ic_saleout_b F
on
E.cgeneralhid = F.cgeneralhid
WHERE E.PK_ORG <> E.csaleorgoid
AND NVL(F.DR,0) = 0 AND NVL(E.DR,0) = 0
) x
left join
bd_material y
on x.pk_material = y.pk_material
left join
bd_materialstock z
on
x.pk_material = z.pk_material
where
z.pk_org not in('00011A10000000002ST4' ,'00011A10000000002T2L','00011A10000000002T1J')
and z.innermoveprice is null
select a.vbillcode ,b.name,'常数' as 常数查询
from so_saleorder a left join bd_psndoc b
on a.CEMPLOYEEID = b.pk_psndoc
where nvl(a.dr,0) = 0
order by 1 desc,2 desc
select 2+5 from dual --dual表
select vbillcode from so_saleorder where vbillcode like '201812%' --左匹配
select vbillcode from so_saleorder where vbillcode like '%201812' --右匹配
select vbillcode from so_saleorder where vbillcode like '%201812%' --中间匹配
相关推荐
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
-
IT之家5月21日消息,科技媒体linuxiac昨日(5月20日)发布博文,报道称代号为SageMargay的AlmaLinux9.6发行版已上线,距上一版本9.5发...
- Java最新学习路线,系统全面,零基础适用
-
首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习java以后肯定是往javaee方向发展的,学习完前端,在学习后端很多东西比计较容易理解!其中J2SE是关键...
- 深入理解数据库事务(数据库事务处理的理解)
-
Transaction作为关系型数据库的核心组成,在数据安全方面有着非常重要的作用,本文会一步步解析事务的核心特性,以获得对事务更深的理解。什么是事务数据库几乎是所有系统的核心模块,它将数据有条理地保...
- IvorySQL 4.4 发布(1044mysql)
-
IvorySQL4.4已于2025年3月10日正式发布。新版本全面支持PostgreSQL17.4,新增多项新功能,并修复了已知问题。增强功能PostgreSQL17.3增强功...
- Oracle 与 Google Cloud 携手大幅扩展多云服务
-
据DCD4月10日报道,甲骨文(Oracle)与谷歌云(GoogleCloud)深化合作,全力扩展多云产品。双方计划为OracleDatabaseGoogleCloud解决方案新增11...
- Izzi 利用 Oracle 云提高计费效率和客户体验
-
据thefastmode网5月2日报道,墨西哥电信运营商Izzi宣布采用Oracle云基础设施(OCI),对其业务支持系统(BSS)进行现代化改造增强客户体验,已经成功完成。通过在OCI上运行...
- 好莱坞群星也有明星脸?硅谷科技名人本尊分身比一比
-
假如有部电影齐聚了众科技名人角色,如同许多好莱坞大牌卡司所共同主演的《瞒天过海》(Ocean’sEleven)那样,演出彼此在商场上竞逐、或共同对抗外来竞争捍卫硅谷的故事,更在剧中有不少对手戏,会不...
- 澳大利亚Find My iPhone被黑 多人被黑客锁机
-
FindMyiPhone本来是一个用于协助找回被盗手机的好工具,但是现在,澳洲的苹果用户发现他们的FindMyiPhone变成了黑客的帮凶。昨天,这名自称为OlegPliss的黑客使用Fin...
- 服务器密码错误被锁定怎么解决(服务器密码失效)
-
#服务器密码错误被锁定解决方案当服务器因多次密码错误导致账户被锁定时,可以按照以下步骤进行排查和解决:##一、确认锁定状态###1.检查账户锁定状态(Linux)```bash#查看账户锁定...
- 凌晨突发的数据库重大故障,我排查了一整天……
-
春节期间过得太热闹了,上班确实没啥状态,这不刚发生的一个重大性能故障,排查了整整一天,后面的领导都站成了一排,本次把故障发生的详细分析过程分享给大家!本次故障发生在凌晨,核心应用卡顿非常严重,Orac...
- Oracle锁表紧急处理!3招快速解锁方案
-
开篇:突发故障现场凌晨1点,某电商系统突然卡顿,数千笔支付订单无法完成——数据库出现死锁,技术团队紧急响应...(遇到类似情况的,欢迎在评论区分享经历)一、问题重现:死锁是如何产生的?典型场景:问题根...
- JetBrains DataGrip Mac中文破解版V2025.1下载安装教程
-
DataGripforMac是由JetBrains开发的数据库集成开发环境(IDE),专为数据库管理员和开发人员设计。它支持多种数据库(如MySQL、PostgreSQL、Oracle、SQ...
- 电脑装安卓系统,安卓X86版5.1 RC1下载
-
日前,谷歌放出了Android-x865.1的第一个候选版本Android-x865.1RC1,该版本基于Android5.1.1r24Lollipop开发,更新包括大量x86(32位)代...
- 来来来!一文告诉你Eclipse的正确安装使用姿势,你都清楚吗?
-
前言本学习笔记是有关如何设置Eclipse的详细说明。即使你天天在使用它,但是,相信我,或许你并不足够了解它。安装Java运行时环境Eclipse是Java应用程序,因此设置Eclipse的第一步是安...
- 分享收藏的 oracle 11.2.0.4各平台的下载地址
-
概述oracle11.2.0.4是目前生产环境用的比较多的版本,同时也是很稳定的一个版本。目前官网上已经找不到下载链接了,有粉丝在头条里要求分享一下下载地址。一、各平台下载地址1.1Linuxx...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)