Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中创建带有伴随过程的决策表_Sql_Sql Server_Stored Procedures_Rules - Fatal编程技术网

在SQL Server中创建带有伴随过程的决策表

在SQL Server中创建带有伴随过程的决策表,sql,sql-server,stored-procedures,rules,Sql,Sql Server,Stored Procedures,Rules,我正试图想出在SQLServer中编写评估决策表的过程的最佳方法 我开始做这件事的方式,请看下面非常简化的示例,除了那些特定参数无关紧要的行之外,其他行都可以。因此,任何一个声明都可以符合第4行中的场景,前提是它属于medical类型。查询找到匹配项后,甚至不会计算其他行。有更好的方法吗 我在想,我可以将表中的行从最复杂的场景排列到最不复杂的场景,然后选择最适合的行,这可能会起作用,但在将来,更多的行将添加到表中,每一行都需要分析它在表中的位置。有些情况甚至可能发生冲突。 我想要最适合这个场景的

我正试图想出在SQLServer中编写评估决策表的过程的最佳方法

我开始做这件事的方式,请看下面非常简化的示例,除了那些特定参数无关紧要的行之外,其他行都可以。因此,任何一个声明都可以符合第4行中的场景,前提是它属于medical类型。查询找到匹配项后,甚至不会计算其他行。有更好的方法吗

我在想,我可以将表中的行从最复杂的场景排列到最不复杂的场景,然后选择最适合的行,这可能会起作用,但在将来,更多的行将添加到表中,每一行都需要分析它在表中的位置。有些情况甚至可能发生冲突。 我想要最适合这个场景的

我现在有一个类似这样的东西:

创建表TTable RowID varcharmax ,索赔类型varcharmax ,varcharmax保险公司 ,Eligibilty varcharmax ,结果varcharmax ,分配varcharmax ,varcharmax 插入表格RowID、索赔类型、保险、资格、结果、分配、入学 值“1”、“医疗”、“投保”、“合格”、“批准”、“指定护士”、“入院” “2”、“医疗”、“未投保”、“不适用”、“拒绝”、“不适用”、“不适用” ,'3','Medical','N/A','IncomeEligible','Pend','AssignReviewer','Pend' ,'4','Medical','N/A','N/A','PED','PED','PED' 创建过程getdecision@ClaimID uniqueidentifier 声明@Type 申报保险 申报@资格 选择@Type=Type 索赔 其中claimid=@claimid 选择@Insurance=Insurance @资格=资格 来自会员保险 其中membemberid=从claimid=@claimid的声明中选择memberid 选择RowID, 后果 分配 准许进入 从表t 其中@Type=ClaimType 当t.保险=不适用时的情况 然后@Type Else t.ClaimType 终止 当t.合格='N/A'时的情况 然后@资格 else t.Eligibility 终止
什么定义了最佳匹配?每个参数是否不同?该过程是否应始终返回一行?是的,每个索赔应仅计算一行。基本上,如果一个声明具有这些属性,colums2,3,4执行这些操作5,6,7。我的真实世界有很多很多属性栏和很多动作栏。你想要的描述太模糊了。可能会给出所有相关表格中的一些样本数据和期望的结果。现在我不清楚你在问什么。我认为,除非你能在这里指定一个很长的if>then系列逻辑,它将包含所有结果,否则你将在某个时候得到一个随机行。你可以在订单中加入一些任意的权重值,也许?正如@TabAlleman所说,目前还不清楚结果应该是什么。或者,您可能需要在初始语句中处理is null逻辑,而不是在结束case语句中。这将使您能够更好地控制缺失值的逻辑。如果这只是实际数据的一个示例,我不确定您愿意编写多少case语句。如果要对所有行进行排名,则需要创建另一列,并为排名所基于的所有列编写case语句。为了简化,我将创建一个表,其中的列与当前表中的值相对应,并根据您的条件对它们进行排序。然后,您可以选择排名最高的行,这也允许将来的可伸缩性。