查找担保圈-step5-比较各组之间的成员,对组的包含性进行查询,具体见程序的注释-版本2
USE [test]
GO
/****** Object: StoredProcedure [dbo].[p03_get_groupno_e2] Script Date: 2019/7/8 15:01:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[p03_get_groupno_e2]
AS
BEGIN
--s3,比较各组的成员,对组进行清理,具体见程序的注释
SET STATISTICS TIME OFF;
SET STATISTICS IO OFF;
SET NOCOUNT ON;
DECLARE @get_max_groupno INT = 0;
SELECT @get_max_groupno = MAX(groupno)
FROM dbo.t01_get_group_path;
--预先清空dbo.t03_get_groupno表
TRUNCATE TABLE dbo.t03_get_groupno;
DECLARE @a INT = 1;
WHILE @a <= @get_max_groupno --最大的分组编号
BEGIN
DECLARE @b INT = @a + 1;
WHILE @b <= @get_max_groupno --最大的分组编号
BEGIN
DECLARE @p BIT = 0,
@q BIT = 0;
IF EXISTS
(
SELECT cust_name
FROM [dbo].[t02_get_group_member]
WHERE groupno = @a
EXCEPT
SELECT cust_name
FROM [dbo].[t02_get_group_member]
WHERE groupno = @b
)
SET @p = 1;
ELSE
SET @p = 0; IF EXISTS
(
SELECT cust_name
FROM [dbo].[t02_get_group_member]
WHERE groupno = @b
EXCEPT
SELECT cust_name
FROM [dbo].[t02_get_group_member]
WHERE groupno = @a
)
SET @q = 1;
ELSE
SET @p = 0;
IF (
@p >= 1
OR @p = 0
)
AND @q = 0 --第1,4种情况,集合a包括集合b的情况(a包括b但b不包括a,a=b两种情况,保留集合a的组号)
INSERT INTO dbo.t03_get_groupno
(
ctype,
iinclude_groupno,
ibeincluded_groupno
)
VALUES
('1,4', @a, @b);
ELSE IF @p = 0
AND @q >= 1 --第2种情况,集合b包括集合a,但集合a不包括集合b
INSERT INTO dbo.t03_get_groupno
(
ctype,
iinclude_groupno,
ibeincluded_groupno
)
VALUES
('', @b, @a); ELSE IF @p >= 1 --第三种情况,a和b存在交集但不完全相同,或者a和b完全不同
AND @q >= 1
BEGIN
INSERT INTO dbo.t03_get_groupno
(
ctype,
iinclude_groupno,
ibeincluded_groupno
)
VALUES
('', @a, 0),
('', @b, 0);
END;
SET @b = @b + 1;
END;
SET @a = @a + 1;
END;
END;
查找担保圈-step5-比较各组之间的成员,对组的包含性进行查询,具体见程序的注释-版本2的更多相关文章
- 查找担保圈-step1-担保圈表函数
USE [test]; GO /****** Object: UserDefinedFunction [dbo].[f_findrecycle] Script Date: 2019/7/8 14:37 ...
- 查找担保圈-step4-提取s1中担保圈路径中的成员
USE [test] GO /****** Object: StoredProcedure [dbo].[p02_get_group_member] Script Date: 2019/7/8 14: ...
- 查找担保圈-step3-获取担保圈路径
USE [test] GO /****** Object: StoredProcedure [dbo].[p01_get_group_path] Script Date: 2019/7/8 14:40 ...
- 查找担保圈-step7-提取未被包含过组的成员,得出结论
USE [test] GO /****** Object: StoredProcedure [dbo].[p05_get_group_member_cleared] Script Date: 2019 ...
- 查找担保圈-step6-对被包含过的组进行清理,只保留未被包含过的组
USE [test] GO /****** Object: StoredProcedure [dbo].[p04_get_groupno_cleared] Script Date: 2019/7/8 ...
- 查找担保圈-step2-拆分成员表函数
USE [test] GO /****** Object: UserDefinedFunction [dbo].[tf_split_char] Script Date: 2019/7/8 14:39: ...
- 关于CodeFirst异常:无法确定类型'XXX'和类型‘YYY’之间的关联的主体端,必须使用关系 Fluent API 或数据注释显式配置此关联的主体端。
此错误的原因是,你配置两个实体间的关系为一对一 然而我认为的一对一关系是,两者之间必须存在一个主体, 也就是说,你不能表1的外键是表2的主键并且表1的主键是表2的外键, 这样不符合数据库式吧? 我想多 ...
- Python全栈--9.1--面向对象进阶-super 类对象成员--类属性- 私有属性 查找源码类对象步骤 类特殊成员 isinstance issubclass 异常处理
上一篇文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象 ...
- C#外部类、内部类(嵌套类)之间的成员访问特点
最近程序中需要用到多线程工作下的单例模式.而其多种实现方法中,利用内部类实现懒汉模式是一种值得推荐的方式.顺便也就对内部类和外部类之间的关系做了一下研究,总结如下(理解不困难,不粘贴代码了,有需要的留 ...
随机推荐
- 【转载】Dijkstra算法和Floyd算法的正确性证明
说明: 本文仅提供关于两个算法的正确性的证明,不涉及对算法的过程描述和实现细节 本人算法菜鸟一枚,提供的证明仅是自己的思路,不保证正确,仅供参考,若有错误,欢迎拍砖指正 ----------- ...
- neo4j︱与python结合的py2neo使用教程
—- 目前的几篇相关:—– neo4j︱图数据库基本概念.操作罗列与整理(一) neo4j︱Cypher 查询语言简单案例(二) neo4j︱Cypher完整案例csv导入.关系联通.高级查询(三) ...
- LINUX 字体查看 字体更改mkfontdir
Linux下字体查看: #fc-list :lang=zh 字体更改: 首先找到相应的字体库:simsun.ttf 宋体 #mkdir -p /usr/share/fonts/truetype //创 ...
- selenium知识点
1. 导包 from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from se ...
- java什么时候进行垃圾回收,垃圾回收的执行流程
java的垃圾回收分为 三个区域新生代 老年代 永久代 一个对象实例化时 先去看伊甸园有没有足够的空间如果有 不进行垃圾回收 ,对象直接在伊甸园存储.如果伊甸园内存已满,会进行一次minor gc然后 ...
- 整个系统禁用复制功能下,js实现部分数据的复制功能
需求背景:整个系统禁止复制,列表页操作栏新增按钮来复制数据列的手机号功能 感受下是怎么回事?看下效果 (GIF有点点烂)
- shell 拾遗
1, 按照行读取文件 while read line do echo ${line} done < ${filename} 2.循环中使用命令输出 while read line do echo ...
- ubuntu 17.04 添加用户到sudo组
最近在系统中安装了KVM和docker,用KVM的时候好好的,可以直接使用virsh等命令.但是安装了docker,使用docker命令时需要在前面加上sudo,这个用起来就挺麻烦的,于是想到dock ...
- 解决“mysql不是内部/外部命令,也不是可执行程序,也不是批处理文件”
解决方案: 1.切换到mysql.exe文件所在目录: 2.将mysql.exe文件所在目录添加到操作系统内的环境变量中: 如何添加环境变量: 1.右击“我的电脑”——>属性——>高级—— ...
- VC 实现程序只运行一个实例,并激活已运行的程序
转载:http://blog.sina.com.cn/s/blog_4b44e1c00100bh69.html 进程的互斥运行:CreateMutex函数实现只运行一个程序实例 正常情况下,一个进程的 ...