Oracle的sql
查看表字段相关定义
select * from all_col_comments where table_name=upper('recsheet') ;
按小时统计,按销售累加销售金额
select s1.code,s1.name,s1.saleday,s1.salehour,s1.amount as hoursale, sum(s2.amount) as daysale from (select code,name,saleday,to_number(salehour) as salehour, sum(amount) as amount FROM (select f.code,f.name,b.createddate,to_char(b.createddate,'yyyy-mm-dd') as saleday,to_char(b.createddate,'hh24') as salehour,-- m.cardno ,m.name ,a.amountFROM salesheet b INNER JOIN SALESHEETGOODS a on a.guid = b.guidinner join Membercard m on m.guid = b.memberid inner JOIN channel f on (b.channelid = f.channelid) where TO_DATE('2020-11-19','yyyy-mm-dd') <= b.SHEETDATE and TO_DATE('2020-11-29','yyyy-mm-dd') >= b.SHEETDATE and f.code in ('9901','9902')) sgroup by code,name,saleday,salehourorder by code,saleday,salehour )s1join(select code,name,saleday,to_number(salehour) as salehour, sum(amount) as amount FROM (select f.code,f.name,b.createddate,to_char(b.createddate,'yyyy-mm-dd') as saleday,to_char(b.createddate,'hh24') as salehour,-- m.cardno ,m.name ,a.amountFROM salesheet b INNER JOIN SALESHEETGOODS a on a.guid = b.guidinner join Membercard m on m.guid = b.memberid inner JOIN channel f on (b.channelid = f.channelid)where TO_DATE('2020-11-19','yyyy-mm-dd') <= b.SHEETDATE and TO_DATE('2020-11-29','yyyy-mm-dd') >= b.SHEETDATE and f.code in ('9901','9902')) sgroup by code,name,saleday,salehourorder by code,saleday,salehour ) s2on s1.code = s2.code and s1.name = s2.name and s1.saleday = s2.saledaywhere s1.salehour >= s2.salehour and s1.code = s2.code and s1.name = s2.name and s1.saleday = s2.saledaygroup by s1.code,s1.name,s1.saleday,s1.salehour,s1.amountorder by s1.code,s1.name,s1.saleday,s1.salehour
查看积分
select * from viewvipintegral where cardno=‘c87dfd31bd7541aab61a1f47465886fc’
viewvipintegral 是视图
查看表的定义
SELECT DBMS_METADATA.GET_DDL(‘TABLE’,‘TABLE_NAME’) FROM DUAL;
查看视图的定义语句
SELECT DBMS_METADATA.GET_DDL(‘VIEW’,‘VIEW_NAME’) FROM DUAL;
表名跟视图名称均要大写。
如 SELECT DBMS_METADATA.GET_DDL(‘VIEW’,‘VIEWVIPINTEGRAL’) FROM DUAL;
CREATE OR REPLACE FORCE VIEW "REGENTA"."VIEWVIPINTEGRAL" ("CARDNO", "INTEGRAL") AS select
/*
------------------------------------------
说明: 会员积分
返回:
建立人员: wk
建立日期:2015-05-04
修改 wk 2015-11-16 调整积分的算法
修改wk 2016-04-28 增加零售订单 与退货的积分
修改wk 2016-05-25 增加零售订单抵减积分
------------------------------------------
*/
--合计积分 = 期初 + 销售累计积分 + 转入积分 - 转出积分 + 充值积分 - 抵减 + 调整 - 清理(年度累计 + 年末抵减)cardno,Sum(balance) INTEGRAL From (--上线期初Select score balance,to_char(cardno) cardnoFrom viewblanceintegral vlUnion All--销售Select nvl(sum(SLG.INTEGRAL),0) balance,to_char(SL.cardno) cardnofrom SaleList slInner Join SALELISTGOODS SLG On SL.GUID=SLG.GUID AND SL.status=1 And sl.cardno Is Not NullInner Join viewblanceintegral vl On sl.cardno=vl.cardno And sl.saledate > vl.sheetdateGroup By SL.cardnoUnion Allselect nvl(sum(og.addintegral),0) balance,to_char(ob.buyer_cardno) cardnofrom o2o_trade otinner join o2o_tradegoods og on og.guid = ot.guidinner join O2O_TradeBuyer ob on ob.guid=ot.guidInner Join viewblanceintegral vl On ob.buyer_cardno=vl.cardno And trunc(ot.sheetdate) > vl.sheetdatewhere ot.status=1group by ob.buyer_cardnoUnion all--积分转卡--转入卡号select nvl(sum(balance),0) balance,to_char(incardno) cardnofrom IntegralTrans itInner Join viewblanceintegral vl On it.incardno=vl.cardno And it.sheetdate > vl.sheetdatewhere status=1 Group By incardnoUnion All--积分转卡--转出卡号select nvl(sum(balance),0)* -1 balance,to_char(outcardno) cardnofrom IntegralTrans itInner Join viewblanceintegral vl On it.outcardno=vl.cardno And it.sheetdate > vl.sheetdatewhere status=1 Group By outcardnoUnion All--充值产生积分 充值积分select nvl(sum(integralvalue),0) balance,to_char(ce.cardno)from CardRecharge ceInner Join viewblanceintegral vl On ce.cardno=vl.cardno And ce.sheetdate > vl.sheetdatewhere status=1 Group By ce.cardnoUnion All--积分明细 --type类型 1=积分兑换/2=抵减积分/4=零售退货产生积分/5=零售订单付款扣减积分select nvl(sum(Integral),0) * -1 balance,Guid cardnofrom MemberIntegrationDetail mdInner Join viewblanceintegral vl On md.guid=vl.cardno And md.saledate> vl.sheetdatewhere type IN (1,2,4,5) and DirectFlag=-1Group By GuidUnion All--积分调整select nvl(sum(Integral),0) balance,Guid cardnofrom MemberIntegrationDetail mdInner Join viewblanceintegral vl On md.guid=vl.cardno And md.saledate> vl.sheetdatewhere type=3 Group By GuidUnion All--积分清零select nvl(sum(integration)+sum(ClearINTEGR),0) * -1 balance, mc.cardnofrom memberintegrationClear mcInner Join viewblanceintegral vl On mc.cardno =vl.cardno And mc.sheetdate > vl.sheetdateGroup By mc.cardno) Group By cardno
select fn_calintegralvalue('c87dfd31bd7541aab61a1f47465886fc') from dual;
查看函数的定义
SELECT * FROM USER_PROCEDURES;
SELECT * FROM USER_SOURCE WHERE NAME = 'FN_CALINTEGRALVALUE';
名称均要大写
Oracle的NVL函数用法
从两个表达式返回一个非 null 值。
语法
NVL(eExpression1, eExpression2)
参数
eExpression1, eExpression2
如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返回 .NULL.。
返回值类型
字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值
说明
在不支持 null 值或 null 值无关紧要的情况下,可以使用 NVL( ) 来移去计算或操作中的 null 值。
select nvl(a.name,‘空得’) as name from student a join school b on a.ID=b.ID
注意:两个参数得类型要匹配
1 SELECT T.D_FDATE,2 T.VC_ZHCODE,3 NVL(SUM(T.F_FZQSZ), 0) f_price_b,4 NVL(SUM(T.F_FZQCB), 0) f_cost_b,5 NVL(SUM(T.F_FGZ_ZZ), 0) f_gz_b,6 NVL(SUM(T.F_FYZQSZ), 0) f_price_Y,7 NVL(SUM(T.F_FYZQCB), 0) f_cost_Y,8 NVL(SUM(T.F_FYGZ_ZZ), 0) f_gz_Y,9 T.VC_SOURCE,
10 SYSDATE d_updatetime
11 FROM GZ_FUND_GZB T
比如这样的判断就很重要啦,因为你不知道哪一行是 is not null 的,也不知道接下来是否要对这个单元格进行运算操作,因此,不能给列填 null,就给它一个 0 ,便于查看,也便于运算。
查询导购业绩报表
select a.*FROM salesheet b INNER JOIN SalesManApportion a on a.saleGuid = b.guidINNER JOIN Businessperson bp on bp.guid = a.businessIdwhere b.manualid='330311922203050003e'--- salesheet 销售表--- SalesManApportion 导购业绩分摊表--- Businessperson 导购信息表
分组后取每组的前10
select rankNum AS rankNum,scode as branchCode,businesspatternname,goodsNo AS sku,goodsName AS description,saleNum AS quantity,amount AS soldValuefrom (select row_number() over ( partition BY scode ORDER BY amount desc) as rankNum,businesspatternname,scode,goodsNo,goodsName,saleNum,amount from (SELECTf.code as scode,f.name as bp.businesspatternname,e.goodsno AS goodsNo,e.goodsname AS goodsName,sum(a.quantity) AS saleNum,sum(a.amount) AS amountFROM SALESHEETGOODS aLEFT JOIN salesheet b on a.guid = b.guidLEFT JOIN goods e on (a.goodsid = e.goodsid)LEFT JOIN channel f on (b.channelid = f.channelid)LEFT JOIN CHANNEL C3 ON (f.Parentid = C3.CHANNELID)Left Join vgoodscategorysales sa On e.salescategoryid=sa.GoodsSaleCategoryidleft join vgoodscategorystory br on br.GoodsStoryCategoryid = e.STORYCATEGORYIDleft join channeltypelist ct on f.channeltypeid = ct.idleft join BusinessPatternlist bp on bp.id= f.BUSINESSPATTERNIDleft join varea va on va.id = f.AREAID where -- and sa.goodssalecategory1 = #{goodssalecategory1}TO_DATE('2022-01-01','yyyy-mm-dd') <= b.SHEETDATE-- and bp.businesspatternname='直营'and sa.goodssalecategory1='套件'group by f.code,bp.businesspatternname,e.goodsno,e.goodsname having sum(a.amount) > 0 )) where rankNum < 6
查看表锁
select b.owner TABLEOWNER, b.object_name TABLENAME, c.OSUSER LOCKBY, c.USERNAME LOGINID, c.sid SID, c.SERIAL# SERIAL
from v l o c k e d o b j e c t a , d b a o b j e c t s b , v locked_object a,dba_objects b, v lockedobjecta,dbaobjectsb,vsession c
where b.object_id = a.object_id AND a.SESSION_ID =c.sid ;
alter system kill session ‘245,43584’;
select object_name,machine,s.program,s.sid,
s.sid||‘,’||s.serial# as killid,
p.spid as os_pid,
s.sql_address,
s.status,
decode(l.locked_mode, 0, ‘None’,
1, ‘Null’,
2, ‘Row-S’,
3, ‘Row-X’,
4, ‘Share’,
5, ‘S/Row-X’,
6, ‘Exclusive’, ‘Unknown’) locked_mode,
s.username,
s.process,
s.sql_id
from gv l o c k e d o b j e c t l , d b a o b j e c t s o , g v locked_object l, dba_objects o,gv lockedobjectl,dbaobjectso,gvsession s,gv$process p
where l.object_id=o.object_id and l.session_id=s.sid
and s.paddr=p.addr
and object_name=upper(‘&tablename’) and o.owner=upper(‘&owner’) order by 1;
select object_name,machine,s.program,s.sid,
s.sid||‘,’||s.serial# as killid,
p.spid as os_pid,
s.sql_address,
s.status,
decode(l.locked_mode, 0, ‘None’,
1, ‘Null’,
2, ‘Row-S’,
3, ‘Row-X’,
4, ‘Share’,
5, ‘S/Row-X’,
6, ‘Exclusive’, ‘Unknown’) locked_mode,
s.username,
s.process,
s.sql_id
from gv l o c k e d o b j e c t l , d b a o b j e c t s o , g v locked_object l, dba_objects o,gv lockedobjectl,dbaobjectso,gvsession s,gv$process p
where l.object_id=o.object_id and l.session_id=s.sid
and s.paddr=p.addr
and object_name=upper(‘&tablename’) and o.owner=upper(‘&owner’) order by 1;"
这个语句可以查看那个表锁了,需要输入表名和用户名
select decode(request,0,‘Holder:’,‘Waiter:’)||s.inst_id||‘:’||s.sid||‘,’||s.serial# sess, s.BLOCKING_SESSION,s.status,
id1,id2,lmode,request,l.type,ctime,s.username,s.sql_id,s.PREV_SQL_ID,s.event,s.SQL_EXEC_START
–,s.service_name
from gv l o c k l , g v lock l,gv lockl,gvsession s
where (id1,id2,l.type) in
(select id1,id2,type from gv$lock where request>0)
and l.sid=s.sid
and l.inst_id=s.inst_id
order by id1,ctime desc,request;
/
select decode(request,0,‘Holder:’,‘Waiter:’)||s.inst_id||‘:’||s.sid||‘,’||s.serial# sess, s.BLOCKING_SESSION,s.status,
id1,id2,lmode,request,l.type,ctime,s.username,s.sql_id,s.PREV_SQL_ID,s.event,s.SQL_EXEC_START
–,s.service_name
from gv l o c k l , g v lock l,gv lockl,gvsession s
where (id1,id2,l.type) in
(select id1,id2,type from gv$lock where request>0)
and l.sid=s.sid
and l.inst_id=s.inst_id
order by id1,ctime desc,request;
/"
这个SQL看数据库存在的锁信息,持锁会话
Oracle的sql相关推荐
- oracle pl/sql 程序设计 历史笔记整理
20131016 周三 oracle pl/sql 程序设计 第2章 创建并运行pl/sql代码 sqlplus yjkhecc/yjkhecc@10.85.23.92:1521/orcl 在java ...
- ORACLE分页SQL
ORACLE分页SQL 1,使用rownum SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ...
- oracle bom层级sql,oracle bom_tree.sql
oracle bom_tree.sql CREATE OR REPLACE FUNCTION BOM_TREE(vpart_no IN parts.part_no%TYPE,mm in varchar ...
- Oracle查看SQL执行计划的方式
Oracle查看SQL执行计划的方式 获取Oracle sql执行计划并查看执行计划,是掌握和判断数据库性能的基本技巧.下面案例介绍了多种查看sql执行计划的方式: 基本有以下几种方式: 1.通过sq ...
- Oracle如何代码编辑,配置UltraEdit为Oracle PL/SQL代码编辑器
配置UltraEdit为Oracle PL/SQL代码编辑器[@more@] 将下文复制到UltraEdit的wordfile.txt的最后,就能实现UltraEdit中对PL/SQL文件语法突出显示 ...
- cmd进入Oracle的sql*plus
Oracle里sql*plus的用户名即system用户,密码是自己设置的密码. 如果密码忘记,可通过如下方法重置. 1.win键+R键,输入cmd,打开命令提示符. 2.输入sqlplus /nol ...
- oracle12测试骤,Oracle中SQL语句解析的步骤
我们都知道在Oracle中每条SQL语句在执行之前都需要经过解析,这里面又分为软解析和硬解析.那么这两种解析有何不同之处呢?它们又分别是如何进行解析呢?Oracle内部解析的步骤又是如何进行的呢?下面 ...
- oracle数据库----SQL语句的实践(应用实例)
oracle数据库----SQL语句的实践(应用实例) 创建表工资表salary,包括员工号emp_id,员工名emp_name,员工月基本工资monthsal,员工月总发工资totalsal. cr ...
- Oracle 与SQL Server 2000常用函数对照 [摘抄]
此文章系摘抄,非原创,供参考. 文中提及函数并非Oracle及SQL Server 的全部功能,尤其分析挖掘函数,并未完全涵盖,请以实际解决问题优先,勿妄谈二者优劣. 1.绝对值 S:select a ...
- oracle表结构修改回滚,87.Oracle数据库SQL开发之 修改表内存——数据库事务的提交和回滚...
87.Oracle数据库SQL开发之 修改表内存--数据库事务的提交和回滚 数据库事务(transaction)就是一组SQL语句,这组SQL语句时一个逻辑工作单元. 要永久性的记录事务中SQL语句的 ...
最新文章
- 在C语言里_大学生:我学了这么久的C语言,为什么感觉它啥都做不了?网友:恰恰相反!...
- 通过Runtime源码了解关联对象的实现
- 【错误记录】无法打开 “xxx“ , 因为 Apple 无法检查其是否包含恶意软件
- 玩转webpack(一)下篇:webpack的基本架构和构建流程
- android里面画布快照,自定义 View - Canvas - 画布操作和快照
- Lua 和 C 交互中虚拟栈的操作和遍历
- 专题导读:大数据支撑的智能应用
- pycharm中的数据库可视化
- vscode搭建汇编环境
- TCP/IP框架总结
- NDK 开发之 CMake 的使用
- OPC UA 的本质
- STM32+多片AD7705+双通道采集热电偶
- 台式计算机 cpu型号大全,台式机CPU参数对照表
- 第四章软件项目进度管理
- BZOJ3202 [Sdoi2013]项链
- 小程序分账系统是什么?能解决二清吗?
- C语言实现扫描文件下所有目录
- 技能设计漫谈 ——从游戏性和流畅角度来看技能的设计要点。
- Java | interface 和 implements关键字【接口,看这篇就够了】