易截截图软件、单文件、免安装、纯绿色、仅160KB

巧用SQL中的WITH(树型结构数据的查询)

如果表中存放的数据是树形结构,当知道某一个节点的值时,同时想取得它所有子节点的数据。
表结构:
        
         
 表中存放的是部门组织结构, BMN_CD部门,SSK_KAISO_LV是阶层,BMN_MKJ部门名称,JOI_KAISO_LV上位阶层,JOI_BMN_CD上位部门。
检索SQL :
 
    WITH Moduals (BMN_CD, SSK_KAISO_LV, BMN_MKJ, BMN_NM_RYKS, SKI_FLG, JOI_KAISO_LV, JOI_BMN_CD) AS (SELECT
    T130A.BMN_CD,
    T130A.SSK_KAISO_LV,
    T130A.BMN_MKJ,
    TRIM(T130A.BMN_NM_RYKS) BMN_NM_RYKS,
    T130A.SKI_FLG,
    T130A.JOI_KAISO_LV,
    T130A.JOI_BMN_CD
from
    T130 T130A
WHERE
    T130A.BMN_CD = 'B00011' AND
UNION ALL
SELECT
    T130B.BMN_CD,
    T130B.SSK_KAISO_LV,
    T130B.BMN_MKJ,
    TRIM(T130B.BMN_NM_RYKS) BMN_NM_RYKS,
    T130B.SKI_FLG,
    T130B.JOI_KAISO_LV,
    T130B.JOI_BMN_CD
from
    T130 T130B
INNER JOIN Moduals T130C
   ON T130B.JOI_KAISO_LV = T130C.SSK_KAISO_LV
  AND T130B.JOI_BMN_CD = T130C.BMN_CD
)
SELECT Moduals.BMN_CD,SSK_KAISO_LV, BMN_MKJ, BMN_NM_RYKS, SKI_FLG, JOI_KAISO_LV, JOI_BMN_CD from Moduals
【 WHERE ………… 】
如果对检索结果还有限制的话,可以加WHERE语句进行限制。。。。。。。。
检索结果:
         


相关文档:

动态SQL与静态SQL

    所谓静态SQL指在PL/SQL块中使用的SQL语句在编译时是明确的,执行的是确定对象。而动态SQL是指在PL/SQL块编译时SQL语句是不确定的,如根据用户输入的参数的不同而执行不同的操作。编译程序对动态语句部分不进行处理,只是在程序运行时动态地创建语句、对语句进行语法分析并执行该语句。
Oracle中动态SQL ......

oracle中sql语句中的in的条件数量大于1000有问题

oracle中sql语句中select * from t_Test t where  t.Id in(1,2,3......)/*数量不能大于1000个*/
解决方法 分割成多次in 然后再或上  如 select * from t_Test t where  t.Id in(1,2,3......800) or  t.Id in(801,802,803......1300)
在使用中最好能不使用其他条件来代替in
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号