用公共表表达式完成一些对特殊部门的操作
2013-08-04 21:49
295 查看
--题目:如下面, 求出所有顶级下的子级(仅子级,不含再下一级),要求是子级或者子级的下面不包含学校 --顶级 ------处长室 ------------科长室0 ------------科长室1 ------宣传部 ------科苑小学 ------初中部 ------------兰州中学 ------高中部 ------------兰州高中 --1. 创建部门表及测试数据 IF OBJECT_ID('Dep') IS NOT NULL BEGIN DROP TABLE Dep END GO CREATE TABLE Dep( id INT, pId INT, [name] VARCHAR(200), isSchool BIT /*是否为学校*/ ) GO INSERT INTO Dep SELECT 1,0,'顶级',0 union SELECT 2,1,'处长室',0 union SELECT 3,2,'科长室0',0 union SELECT 4,2,'科长室1',0 union SELECT 5,1,'宣传部',0 union SELECT 6,1,'科苑小学',1 union SELECT 7,1,'初中部',0 union SELECT 8,7,'兰州中学',1 union SELECT 9,1,'高中部',1 union SELECT 10,9,'兰州高中',0 --SELECT * FROM Dep d --2. 创建查询所有子级单位的函数 IF OBJECT_ID('fn_getSubDep') IS NOT NULL BEGIN DROP FUNCTION dbo.fn_getSubDep END GO CREATE FUNCTION fn_getSubDep( @depId INT ) RETURNS TABLE AS RETURN( WITH cte(id,pId,NAME,isSchool, level) AS ( SELECT id,pid,NAME,isSchool, 0 FROM Dep d WHERE id=@depId UNION ALL SELECT d2.id,d2.pid,d2.NAME,d2.isSchool, cte.[level]+1 FROM Dep d2 JOIN cte ON d2.pid = cte.id ) SELECT * FROM cte ) GO --SELECT * FROM dbo.fn_getSubDep(2) --3. 求出所有顶级下的子级(仅子级,不含再下一级),要求是子级或者子级的下面不包含学校 WITH cte(id,pId,NAME,isSchool) AS ( SELECT id,pId,NAME,isSchool FROM dbo.fn_getSubDep(1) t1 WHERE LEVEL=1 AND isSchool=0 AND NOT EXISTS( SELECT 1 FROM dbo.fn_getSubDep(t1.id) WHERE isSchool=1 ) ) SELECT * FROM cte
相关文章推荐
- 用公共表表达式完成一些对特殊部门的操作
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- 将AltiumDesigner(Protel升级版)的PCB设计打造成利器——订制应用、操作、过滤表达式及其他一些微操作
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- 常用正则表达式——包括校验数字、字符、一些特殊的需求等等
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- python的字符串和对象的一些操作和运算以及lambda表达式
- [转]最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等本文出处
- 一些有用的正则表达式特殊字符意义
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- 主要完成数据库的一些公共类的设置
- 最近项目有个需要,需要动态截取输入字符串中的某些特殊字符组,使用正则表达式可以完成。记下备用
- 将AltiumDesigner(Protel升级版)的PCB设计打造成利器——订制应用、操作、过滤表达式及其他一些微操作
- 最全的常用正则表达式大全――包括校验数字、字符、一些特殊的需求等
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- 最全的常用正则表达式--包含校验数字、字符、一些特殊的需求等等
- DataGrid一些特殊操作