我的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