lz那时刚毕业,刚投了简历有家公司让我去上班,当时觉得有公司要我了,那个欣喜若狂,后来才知道那是一家外包公司,项目组换了又换,这是我再一家证券公司时积攒的一点sql经验,现在拿出来和大家分享。
至于他们用的工具我就不说了。在整个sql过程中接触最多的是这句sql->a.branch_no in (select jgid from t_jg connect by sjjgid = prior jgid start with jgid = '||v_jgid||')'; 因为以前也没有sql经验 所以看到这句时真的有点不知所云的感觉,于是lz就百度了下(大致是一个表里面有两个字段 一个是父节点一点事父节点下的孩子 其实就是一个遍历树的过程)对于那些查询分公司 分公司下的营业部的挺实用的。还有就是有日期参数,可是lz怎么执行也不行 说sql有误经过多次试验才摸索到->原来->按日期查询的时候竟然要用三个单引号,sql的脾气真是摸不透。还有 如果你在执行sql过程中一直报->"缺失右括号"这个错 可能是拼凑字符串拼错了。下面说下排名函数吧:主要是有这几种1:row_number()从1开始,为每一条分组记录返回一个数字(select (row_number() over(order by xx desc)) px from table;)先降序排序 在返回一个数字。2:rank() RANK 函数返回一个数字在数字列表中的排位, 数字的排位是其大小与列表中其他值的比值().
select * from
(
(select * from tablle1 t1,table2 t2 where t1.uid=t2.id) ta1,
table2 ta3,
table4 ta4 where ta1.yyb=ta3.yyb and ta3.dyyh=ta4.id
)
为什么要贴上面一段sql 仔细看看 其实他是比较复杂一点的sql结构了 把表、查询的结果集联合起来,结构简单明了。
select * from table1 t1,table2 t2 where t1.id=t2.uid(+)(后面带个加号表示左连接即:左边的数据全显示);
select * from table1 t1,table2 t2 where t1.id(+)=t2.uid(后面带个加号表示右连接即:右边的数据全显示)。
这个是查看存储过程错误的
这个是改变工作空间的编码配置下环境变量就可以了。
这是调用存储过程的方式 declare
out_cur types.cursorType;
begin
xxx(out_cur,'20120406','20120411','','');
end;
这是一些函数:
coalesce(a,0) 如果a的值为null则显示0;
decode(a,1,0,1)如果a的值为1则显示0否则显示1
nvl(a,b)如果a不为null则显示a否则显示b
CAST(id AS VARCHAR(20));
大概lz用到的就这么多当然了这是是数据库知识的冰山一角 更多的知识等待大家去总结 去挖掘 去学习 去掌握!