1.递归函数 SELECT ...FROM WHERE (过滤返回记录,仅过滤被限定节点,其根节点和子节点均不受影响) START WITH (根节点,可以指定多个节点) CONNECT BY PRIOR= (连接条件,PRIOR置于等号前,则从根节点到叶节点开始检索;置于等号后,则从叶节点到根节点开始检索)
2.树状&拼接字符串(SYS_CONNECT_BY_PATH(column_name,'分隔符')函数) SYS_CONNECT_BY_PATH(column_name,'分隔符')函数 第一个参数是形成树形式的字段,第二个参数是父级和其子级分隔显示用的分隔符 SUBSTR(SYS_CONNECT_BY_PATH(COLUMN_NAME,','),2) 先连接所有节点,从第二个字符开始截取,字符串用英文逗号隔开,取最完整条目。 此函数必须配合递归SQL使用 例: SELECT * FROM ( SELECT DISTINCT ROLE_NAMES||'-'||ROLE_NAME ROLE_NAME, SUBSTR(SYS_CONNECT_BY_PATH(NAME,','),2) NAME_PATH, LEVEL FROM MAIN PP WHERE PP.PARENT_ID IS NULL START WITH PP.PARENT_ID IS NULL CONNECT BY PRIOR PP.ID=PP.PARENT_ID ) ORDER BY ROLE_NAME,NAME_PATH
3.分组排序 语法格式:row_number() over(partition by 分组列 order by 排序列 desc) row_number() over()分组排序功能: 在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行, 使用row_number()函数进行编号
4.对字符串进行拆分 SELECT REGEXP_SUBSTR(A.METRIC, '[^.]+', 1, 1) AS PROJECT, REGEXP_SUBSTR(A.METRIC, '[^.]+', 1, 2) AS LINE_DESC, REGEXP_SUBSTR(A.METRIC, '[^.]+', 1, 3) AS SECTION_DESC, REGEXP_SUBSTR(A.METRIC, '[^.]+', 1, 4) AS DEVICE_SIGN FROM "BIG_DATA_DEVICE" A WHERE VALUE='true'
5.关联修改表数据 UPDATE "SYS_USER" A,PERSON_INFO B SET A.ESTABID2=B.ESTABID2, A.GD_WING_FLAG=B.GD_WING_FLAG, A.GD_ELITE_FLAG=B.GD_ELITE_FLAG, A.JPM_DESCR90=B.JPM_DESCR90, A.GD_HOME_ADDRESS=B.GD_HOME_ADDRESS, A.GD_SEQUENCE=B.GD_SEQUENCE, A.GD_NATIONALITY=B.GD_NATIONALITY, A.GD_SERV_YEARS_DT=B.GD_SERV_YEARS_DT, A.GD_WORK_PLACE=B.GD_WORK_PLACE, A.GD_MUL_CMMTS=B.GD_MUL_CMMTS WHERE A.EMP_ID=B.EMP_ID
6. 将字段A列表转换成A字符串,并用英文逗号隔开 LISTAGG(A.LINE_CODE, ',') WITHIN GROUP (ORDER BY A.LINE_CODE) AS LINE_CODE,
--------------未完待续------------------