我的SQL Server 2008R2找到匹配的记录集
消息表
ContrlNo| LineNo | Msg
1 | 1 | Tiger1 Text
1 | 2 | Tiger1 Text
1 | 3 | Tiger1 Text
1 | 4 | Tiger1 Text
2 | 1 | Tiger1 Text1
2 | 2 | Tiger1 Text2
2 | 3 | Tiger1 Text3
2 | 4 | Tiger1 Text4
3 | 1 | Horse 1
3 | 2 | Horse 2
3 | 3 | Horse 3
3 | 4 | Horse 4
RuleTable
RuleNo| MsgLineNo | RuleStartingPos | RuleMsg
1 | 1 | 1 | Tiger1 Text
2 | 1 | 1 | Tiger1 Text
2 | 3 | 1 | Tiger1 Text3
对于每一组ControlNo记录对下面的表MESSAGETABLE我想应用规则fr om RULETABLE并列出RULENo,如果有任何mataches。
如果您看到规则表,则规则2与规则1重叠。要求是为每个控制号获得最匹配的规则编号。该预期的结果,
ContrlNo | RuleNo
1 | 1
2 | 2
3 | NULL
感谢, 周杰伦
我不明白背后的预期结果你的逻辑。你能更彻底地解释一下吗? – 2014-11-03 19:36:00
我们需要为每个ContrlNo获取所有记录(LineNo,Msg),并将其与RuleTable(MsgLineNo,RuleMsg)进行匹配。 – Jay 2014-11-03 19:46:54
例如,如果我们从MessageTable获取属于控件号1的记录并将其与RuleTable匹配,则RuleNo 1匹配100%。但RuleNo 2有两个条件,规则2的第二个条件不匹配。所以结果是,ContrlNo | RuleNo(1 | 1)。 如果我们从MessageTable中获取属于ContrlNo 2的记录并将其与RuleTable进行匹配,则RuleNo 1匹配100%。但RuleNo 2有两个条件,它们都匹配100%。因为我们需要最大的匹配规则,所以在这种情况下,结果是ContrlNo | RuleNo(2 | 2)。 – Jay 2014-11-03 19:56:03